我是 XQuery 新手,我需要通过 XQuery 发送以下 JSON 块来查询数据库(Neo4j):
{
"query" : "START root=node(id_number) MATCH (root)-[:RELATED_TO]->(x) RETURN x.firstName, x.lastName",
"params" : {
"id_number" : "1"
}
}
所以我尝试了:
let $payload := '{
"query" : "START root=node(id_number) MATCH (root)-[:RELATED_TO]->(x) RETURN x.firstName, x.lastName",
"params" : {
"id_number" : "1"
}
}'
我收到以下错误:
400 错误请求。由于语法错误,无法满足请求。错误类型:XQuery 引擎错误。HTTP 错误。连接字符串:。
我也尝试将 " 与 ' 互换,反之亦然,但得到了同样的错误。
在 XQuery 中传递 JSON 块的正确语法是什么?
任何意见,将不胜感激!
======================更新======================
我切换到 Zorba XQuery 处理器,但在传递 JSON 查询时仍然遇到问题。我有以下内容:
import module namespace json = 'http://www.zorba-xquery.com/modules/json';
import module namespace zorba-rest = "http://www.zorba-xquery.com/zorba/rest-functions";
declare copy-namespaces no-preserve, no-inherit;
let $jsonresult := zorba-rest:post("http://localhost:7474/db/data/cypher",
<payload content-type="multipart/form-data">
<part name="query">START root=node(1) MATCH (root)-[:RELATED_TO]->(x) RETURN x.firstName, x.lastName</part>
</payload>,
<headers>
<header name="Accept">application/json; charset=UTF-8</header>
<header name="Content-Type">application/json</header>
</headers>)
let $result := json:parse($jsonresult)
return
<Table>
<Row>
<result>{
$result
}</result>
</Row>
</Table>
幸运的是这次我没有遇到任何错误,但是我返回了一个空数据集(应该有 4 个返回的行):
<Table>
<Row>
<result>
<json type="object" />
</result>
</Row>
</Table>
任何想法为什么会发生这种情况?
感谢您的帮助!