在我的带有前端前端的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});
其中请求网址如下:
在控制台中,我收到以下错误消息:
无法加载资源 http://localhost:4200/api/queries/selectEmployeesByProject?projects=resource:org.comp.app.Project#project1ID 服务器响应状态为400(错误请求)
为什么查询不起作用?
通常,到REST服务器的httpRequests在我的应用程序中工作。甚至其他查询也可以。但是,使用“ CONTAINS”运算符(例如上面的一个)的查询无效。
答案 0 :(得分:0)
更有可能是
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必须匹配一个条目('array包含一个元素,且字符串完全匹配(在上面),在任何元素中,该数组)