首页 > 解决方案 > 在 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 。

你有什么建议吗?

标签: restcouchdbhyperledgerhyperledger-composer

解决方案


我发现您提供的定义存在三个问题:

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 )
}

推荐阅读