запрос составителя гиперледжера с оператором «СОДЕРЖИТ» не работает - PullRequest
0 голосов
/ 06 июля 2018

В моем приложении hyperledger-composer с угловым интерфейсом я хочу отправить запрос на REST-сервер.

query selectEmployeesByProject {
    description: "Select all employees with access to the specified project"
    statement:
        SELECT org.comp.app.Employee
            WHERE (projects CONTAINS [_$project])
                ORDER BY [lastName, firstName]
}

Сотрудник определяется следующим образом:

participant Employee {
  o String lastName
  o String firstName
  --> Project[] projects optional
}

Отправляется http-запрос:

this.httpClient.get<any[]>(requestURL, {withCredentials: true});

, где URL-адрес запроса следующий:

http://localhost:4200/api/queries/selectEmployeesByProject?projects=resource:org.comp.app.Project#project1ID

В консоли я получаю следующее сообщение об ошибке:

Не удалось загрузить ресурс http://localhost:4200/api/queries/selectEmployeesByProject?projects=resource:org.comp.app.Project#project1ID сервер ответил со статусом 400 (Bad Request)

Почему запрос не работает?


В общем, httpRequest на REST-сервер работает в моем приложении Даже другие запросы работают. Однако запросы с оператором «СОДЕРЖИТ» (например, приведенный выше) не работают.

1 Ответ

0 голосов
/ 06 июля 2018

более вероятно, будет

query selectClientsByProjects {
    description: "Select all clients with access to a certain project"
    statement:
        SELECT org.myComp.myApp.Client
            WHERE (projects CONTAINS [_$project])
                ORDER BY [lastName ASC, firstName ASC]
}

Примечание: на момент написания - CouchDB не позволяет предложению ORDER BY содержать несколько элементов разного направления сортировки (очевидно, не выше).

Также - не проверено, но ваш http-вызов может быть:

this.http.get('http://localhost:4200/api/queries/selectClientsByProjects?projects=resource:org.myComp.myApp.Project%231')

(%23 - это ASCII для '#')

Вы в любом случае можете сначала опробовать свое определение (например, без ORDER BY может быть) и т. Д. И т. Д. Примечание: CONTAINS должен соответствовать одной записи ('массив содержит элемент с полным совпадением строк (см. Выше) в любом элементе в этот массив)

...