rest - 在 Hyperledger Composer 中使用 Array 参数进行查询
问题描述
我正在寻找使用数组作为参数来构建查询,如下所示:
模型文件
asset Car identified by id {
o String id
--> Model model
}
asset Model identifierd by id {
o String id
o String name
}
查询以检索具有指定型号的所有汽车:
query getCarsByModels {
statement:
SELECT ie.example.Car
WHERE (_$modelArray CONTAINS model)
}
查询端点我收到此错误:undefined is a required argument
,这显然与此问题中引发(并解决)的错误相同:https ://github.com/hyperledger/composer/issues/2539 。
你有什么建议吗?
解决方案
我发现您提供的定义存在三个问题:
1)您的模型文件应如下所示(可能是剪切-粘贴错误?)
asset Model identified by id {
o String id
o String name
}
2) 该操作CONTAINS
应针对 Array 字段使用。您的资产定义 (for Car
) 没有一个数组字段。
3)您的查询需要以正确的方式使用操作数:-您的“左手”字段必须是模型中某处定义的字段-即实际的数组字段,例如。
query getCarsByModels {
statement:
SELECT ie.example.Car
WHERE ( model CONTAINS _$model )
}
以及您的模型在哪里
asset Car identified by id {
o String id
--> Model[] model // or `o Model[] model`
}
我不得不问 - 你为什么需要一个数组 - 当你可以简单地做:
query getCarsByModels {
statement:
SELECT ie.example.Car
WHERE ( model == _$model )
}