2017-03-07 85 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); 
    }); 
相關問題