/ / Node-Neo4jノードが(永続的に)存在するかどうかを確認するには? -neo4j、一意のノード、node-neo4j

Node-Neo4jノードが存在する(永続的に)かどうかをチェックする方法? - neo4j、ユニーク、ノード、ノード-n neo4j

データベースにNode-Neo4jクライアントを使用しています。一意のノードを作成したいのですが、Node-Neo4jのドキュメントでその方法を見つけることができませんでした。以下のロジックを使用して、ノードが存在するかどうかを確認しました。

person_param = {"name": namesurname, "userid": userid };
person_node = db.createNode(person_param);

if (!person_node.exists){
person_node.save(function(err, result){
//if(err) and if(!err) stuff
});
}

しかし、私が理解していることから、 createNode 最初から新しいノードを作成し、使用するとき exists その上で、新しく作成されたノードがデータベースに保存されたかどうかをチェックします。

指定されたプロパティを持つノードが既にdbに存在するかどうかを確認するにはどうすればよいですか?

前もって感謝します。

回答:

回答№1は1

私が考えることができる唯一の解決策は、次のとおりです。

  • プロパティオブジェクトを作成する
  • それらのプロパティについてNeo4Jインスタンスをクエリする
    • 結果が返される場合は、それを使用します
    • それ以外の場合は保存します

コード内:

var person_param = {"name": namesurname, "userid": userid };
// Build a Cypher query
var query = [
"MATCH (user: {name: {name}, id: {userid}})",
"RETURN user"
].join("n");
// use your params in the query
var params = person_param;

// Send the Cypher query
db.query(query, params, function (err, results) {
if (err) throw err;
// no node with such properties found
if(!results.length){
saveNode(params, callback)
} else {
// carry on with your code...
}
});

function saveNode(person_param, callback){
var person_node = db.createNode(person_param);
person_node.save(function(err, result){
//if(err) and if(!err) stuff
// call the callback here
});
}

このアプローチの欠点は、それぞれに対してCypherクエリを作成する必要があることです タイプ なぜなら、プロパティ名と値の両方をCypherに渡す方法がない(私の知る限り)からです。