Получение узла по идентификатору и параметрам с помощью Neo4j-Driver для nodejs

Я пытаюсь вернуть определенный узел с идентификатором (используя пакет neo4j-driver на моем сервере nodejs). У меня есть идентификатор узла, который я ищу. Поэтому я использовал параметры в методе запуска, как показано ниже, но я не получаю никаких узлов.

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

Я проверил, и idUser-значение равно 128, и когда я запускаю эту команду, я получаю правильный узел.

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

Есть ли кто-нибудь, чтобы первая команда работала так, чтобы я мог получить узел с указанным идентификатором?

Спасибо

1 ответ

Решение

Как написано в документации драйвера:

Число, написанное напрямую, например, session.run("CREATE (n:Node {age: {age}})", {age: 22}) будет иметь тип Float в Neo4j. Чтобы записать возраст как целое число, следует использовать метод neo4j.int... https://github.com/neo4j/neo4j-javascript-driver

Поэтому, когда вы передаете идентификатор из 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
  })
Другие вопросы по тегам