使用“ CONTAINS”运算符的hyperledger-composer查询不起作用

时间:2018-07-06 03:04:02

标签: hyperledger-composer named-query

在我的带有前端前端的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

在控制台中,我收到以下错误消息:

  

无法加载资源   http://localhost:4200/api/queries/selectEmployeesByProject?projects=resource:org.comp.app.Project#project1ID   服务器响应状态为400(错误请求)

为什么查询不起作用?


通常,到REST服务器的httpRequests在我的应用程序中工作。甚至其他查询也可以。但是,使用“ CONTAINS”运算符(例如上面的一个)的查询无效。

1 个答案:

答案 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包含一个元素,且字符串完全匹配(在上面),在任何元素中,该数组)