使用参数化查询时,Neo4J始终将NodeJS数字默认为浮点数

时间:2019-04-15 18:24:12

标签: node.js neo4j cypher

我正在尝试将Neo4j与NodeJS结合使用,使用参数将一些值保存到Neo4j节点中,如下所示:

{
    query: 'MATCH (n{id:$id}) SET n.n1 = $number RETURN n',    
    params: { id: 'someId', number: 15 } 
}

当我在Neo4j中查看数据时,数据始终显示为{n1: 15.0}而不是{n1: 15}。除非数字中没有明确的小数位数,否则是否有一种简单的方法将数字保持为整数?

1 个答案:

答案 0 :(得分:1)

您可以使用TOINTEGER()函数将其转换为整数:

MATCH (n{id:$id}) SET n.n1 = TOINTEGER($number) RETURN n

[已更新]

如果您使用的是官方neo4j Javascript driver,则应阅读其special support for integers in Javascript(以解决Javascript不支持neo4j使用的64位整数的事实)。 / p>

在这种情况下,应使用驱动程序的neo4j.int()方法传递整数参数值,否则它将作为浮点数传递。

例如:

var neo4j = require('neo4j-driver').v1;

var result = session.run(
  "MATCH (n{id:$id}) SET n.n1 = $number RETURN n",
  {id: 'abc123', number: neo4j.int(15)}
);