2017-03-07 84 views
0

有没有办法通过cypher返回一个整数?neo4j返回一个整数,而不是{高:0,低:10}

我正在使用neo4j和javascript驱动程序。但是,当我做count()我得到{low: 10, high: 0}。我想强制这个返回一个低整数而不是上面的对象。这是可能的通过密码?

请注意,我不希望这样做的Neo4j的JavaScript的驱动程序和喜欢做这暗号,因为我知道这将是一个低的数字...

+0

能否请您分享整个Cypher支架查询? –

回答

1

Cypher支架只能用龙和双值工作。 Javascript无法充分代表64位Long。

有Neo4j javascript驱动程序的advice here为处理这个问题,当提供参数给Neo4j查询时,以及处理返回的长整数。

+0

是的,我看到了。但有没有办法强制neo4j使用Double值,以便它们以JS的形式出现ints?每次我有一个使用整数的查询时,必须编写定制的JS逻辑非常繁琐。 –

1

你可以写你的转化的简单处理:

var transformIntegers = function(result) { 
    return new Promise((resolve,reject) => { 
    try { 
     result.records.forEach(function(row, i) { 
     row._fields.forEach(function(val, j) { 
      result.records[i]._fields[j] = neo4j.isInt(val) 
       ? (neo4j.integer.inSafeRange(val) ? val.toNumber() : val.toString()) 
       : val; 
     }) 
     }) 
     resolve(result); 
    } catch (error) { 
     reject(error); 
    } 
    }); 
}; 

而且作为一个例子:

session 
    .run('MATCH (A) RETURN ID(A) AS id, toInteger(10^20) as unsafe LIMIT 1') 
    .then(transformIntegers) 
    .then(function(result) { 
    console.log(result.records[0]); 
    session.close(); 
    driver.close(); 
    }) 
    .catch(function(error) { 
    console.log(error); 
    }); 
相关问题