/ / Node-Neo4j Как да проверя дали съществува възел (постоянно)? - neo4j, уникален, възли, възел-neo4j

Node-Neo4j Как да проверите дали възел съществува (постоянно)? - neo4j, уникални, възли, възел-neo4j

Използвам клиент на Node-Neo4j за db. Искам да създам уникален възел, но не успях да намеря как да го направя в документацията на 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.