2017-11-06 6 views
0

SomeNodeとOtherNodesのすべてのプロパティとIDを取得しようとしています。プロパティ(n)を使用しているサイファー要求でノードIDを取得するにはどうすればよいですか?

私はこのクエリを持っている:予想通り

const neo = driver.session(); 
const responseObj = { error: false, message: 'success: getting nodes' }; 

const q = 'MATCH (n:SomeNode)-[:has]->(o:OtherNode), ' + 
' RETURN properties(n) AS node, properties(o) AS otherNode'; 

neo.run(q) 
.then((result) => { 
    const records = result.records; 
    const nodes = []; 

    records.forEach((record) => { 
    nodes.push({ 
     node: record.get('node'), 
     other: record.get('otherNode') 
    }); 
    }); 

    responseObj.nodes = nodes; 
    neo.close(); 
    respond(null, responseObj); 
}); 

これは、私にSomeNodeのプロパティとOtherNodeのプロパティを持つオブジェクトの配列をバック与えるが、私はまた、SomeNodeとOtherNodeのIDを必要とします。これを達成する最良の方法は何ですか?

nodeが返された場合のIDの取得方法は?

enter image description here

答えて

1

map projectionを使用すると、追加のマッププロパティを追加するなどして、ノードのプロパティを取得してカスタマイズすることができます。デフォルトでは、IDを含める必要があり、直接noを返すものの

MATCH (n:SomeNode)-[:has]->(o:OtherNode) 
RETURN n {.*, _id:id(n)} AS node, o {.*, _id:id(o)} AS otherNode 

+0

私はちょうどノードを返す場合、IDを取得する正しい方法は何ですか? – cmac

+0

node.properties.id ...が表示されません。 – cmac

+0

どのように出力を消費しているかによって異なります。ブラウザの結果のコードビュータブを見ると、返されたデータにidが表示されます。 neo4jドライバを使って結果にアクセスする場合、返されるノード結果の識別子に同様にアクセスできなければなりません(その中ではなく 'properties'と同じレベル)。 – InverseFalcon

1

次の例のように、プロパティと一緒にIDを返すために、地図投影を使用することができます。

MATCH (n:Company) RETURN {properties: properties(n), id:id(n)} 

-

{"properties":{"desc":"Programmable 4thgeneration array", 
"name":"Homenick-Feeney"},"id":"2111"} 

をしかし、その後、なぜ単にノードを返しませんそれだけであなたが持っている唯一の情報は、そのラベルですか?

+0

私はプロパティを使用するのが好きです。なぜなら、プロパティを返すだけなので、node.properties.propを実行する必要はありません。ノードを返すだけで、IDを取得する正しい方法は何ですか? – cmac

+0

node.properties.id ....が表示されません。 – cmac

+0

あなたはオブジェクトのデバッグをダンプすることができます、そこにあるはずです –

関連する問題