Получение узла по идентификатору и параметрам с помощью 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
})