node.js - 使用参数化查询时,Neo4J 始终将 NodeJS 数字默认为 float

标签 node.js neo4j cypher

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

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

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

最佳答案

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

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

[已更新]

如果您使用的是官方neo4j Javascript driver ,那么你应该阅读它的 special support for integers in Javascript (解决 JavaScript 不支持 Neo4j 使用的 64 位整数的问题)。

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

例如:

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)}
);

关于node.js - 使用参数化查询时,Neo4J 始终将 NodeJS 数字默认为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695183/

相关文章:

javascript - 当连接到 MongoDB Replicaset 时,Node.js "auth fail"仅 3 个服务器中的 2 个处于运行状态

javascript - 有没有办法在浏览器选项卡之间共享套接字连接

java - 避免隐式急切加载集合 stub ?

neo4j - 使用密码查找子图中未连接到指定节点的节点

java - 通过 Advanced Rest Client 发送 JSON 数据时发生类转换错误

node.js - 使用 Mongoose 静态的Elastic Search Client进行条件更新

javascript - 在 Node 中运行简单的html或js文件

Neo4j CSV 导入状态更新

neo4j - 查找多个记录时,Cypher 查询不返回关系

java - 返回传入和传出关系 - Cypher - 非常慢