0

我是 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>

任何想法为什么会发生这种情况?

感谢您的帮助!

4

0 回答 0