Запрос с параметром Array в Hyperledger Composer - PullRequest
0 голосов
/ 11 июня 2018

Я хочу построить запрос, используя массив в качестве параметра, что-то вроде этого:

Файл модели

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 Ответ

0 голосов
/ 11 июня 2018

Я вижу три проблемы с предоставленным вами определением:

1) Файл вашей модели должен выглядеть следующим образом (возможно, ошибка вырезания-вставки?)

asset Model identified by id {
    o String id
    o String name
}

2)Операция CONTAINS должна использоваться против поля Array.В вашем определении актива (для 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 )
}
...