3

我正在尝试返回具有 id 的特定节点(在我的 nodejs 服务器中使用 neo4j-driver 包)。我有我正在搜索的节点的 ID。所以我使用了 run 方法中的参数,如下所示,但我没有得到任何节点。

session.run('MATCH (n:User)-[:OWN]->(a) WHERE id(n) = $id RETURN a',{id: idUser})

我检查了 idUser-value 是 128,当我运行这个命令时,我得到了正确的节点。

session.run('MATCH (n:User)-[:OWN]->(a) WHERE id(n) = 128 RETURN a',{id: idUser})

有没有人可以使第一个命令正常工作,以便我可以获得给定 id 的节点?

谢谢

4

1 回答 1

2

正如驱动程序文档中所写:

直接写入的数字,例如 session.run("CREATE (n:Node {age: {age}})", {age: 22}) 在 Neo4j 中将是 Float 类型。要将年龄写为整数,应使用 neo4j.int 方法... https://github.com/neo4j/neo4j-javascript-driver#write-integers

因此,当您从 node.js 传递标识符时,您需要对其进行转换:

session
  .run('MATCH (n:User)-[:OWN]->(a) WHERE id(n) = $id RETURN a', {
    id: neo4j.int(idUser)
  })

或者:

session
  .run('MATCH (n:User)-[:OWN]->(a) WHERE id(n) = toInteger($id) RETURN a', {
    id: idUser
  })
于 2018-07-03T10:08:08.560 回答