【问题标题】:Getting node by id and parameters with Neo4j-Driver for nodejs使用适用于 nodejs 的 Neo4j-Driver 通过 id 和参数获取节点
【发布时间】:2018-07-03 18:08:08
【问题描述】:

我正在尝试返回带有 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 的节点?

谢谢

【问题讨论】:

  • 也许idUser1 有一个字符串值?本机 ID 有一个数值,如果你尝试将其与字符串进行比较,则比较总是会失败。

标签: node.js neo4j parameters neo4j-driver


【解决方案1】:

正如驱动文档中所写:

直接写的数字,例如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
  })

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 2019-12-14
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多