Получение узла по идентификатору и параметрам с помощью Neo4j-Driver для nodejs - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь вернуть определенный узел с идентификатором (используя пакет 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 Ответ

0 голосов
/ 03 июля 2018

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

Номер написан непосредственно, например session.run ("CREATE (n: Node {age: {age}}) ", {age: 22}) будет иметь тип Float в Neo4j. Чтобы написать возраст в качестве целого числа должен использоваться метод 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
  })
...