2017-03-07 7 views
0

cypherから整数だけを返す方法はありますか?neo4jは{high:0、low:10}の代わりに整数を返します

私はneo4jとjavascriptドライバを使用しています。しかし、私がcount()をしたとき、私は{low: 10, high: 0}を得ます。私は、上記のオブジェクトの代わりに低整数を返すように強制したいと思います。これはサイファーを通じて可能ですか?唯一のロングとダブル値を扱う

+0

あなたは全体のサイファークエリを共有していただけますか? –

答えて

1

サイファー私はjavascriptのドライバのNeo4jでこれを行うと、私はそれが低い数になります知っているので、CYPHERでこれを行うことを好むしたくない

注... 。 Javascriptでは64ビットLongを適切に表現できません。

Neo4jクエリーにパラメータを渡すときや、返されたlongを処理するときにNeo4j javascriptドライバがこれを処理するためのadvice hereがあります。

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

そして例のように:

+0

はい、私はそれを見ました。しかし、neo4jにDouble値を使用させてJSでintとして表示させる方法はありますか?整数を使用するクエリがあるたびに、注文されたJSロジックを記述するのは非常に面倒です。 –

1

あなたは変換のためのあなたの簡単なハンドラを書くことができます

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); 
    }); 
関連する問題