如何使用nodejs在neo4j中创build标签

我使用下面的方法来使用nodejs在Neo4j中创build一个节点。 我想创build一个标签以及一些属性的节点。

var query = [ "CREATE (n:TYPE {props})", "RETURN n", ].join('\n').replace('TYPE','PLAYER'); var params = { props: data, }; neo4jClient.query(query, params, function (err, results) { if(err) return callback(err); var node = neo4jClient.createNode(results[0].n._data.data); var player = new Player(node); node.save(function (err) { console.dir(err); if (err) return callback(err); node.index(INDEX_NAME, INDEX_KEY, INDEX_VAL, function (err) { if (err) return callback(err); callback(null, player); }); }); }); 

问题: – 一切正常,但是这个方法在neo4j中创build了两个节点。 我不知道内部发生了什么事。 请给我一些在这个问题上的投入。

你实际上执行创build节点的查询(并且会很好)。

但是,你再次去创build一个新的节点node.save() + node.index() ,这两个都不是必需的,因为CREATE查询已经完成了工作。

它与以下function一起使用。

 neo4jClient.query(query, params, function (err, results) { if(err) return callback(err); var node = results[0].n; var player = new Player(node); node.index(INDEX_NAME, INDEX_KEY, INDEX_VAL, function (err) { if (err) return callback(err); console.log("============================="); callback(null, player); }); }); 

neo4jClient.query本身创build一个节点,所以如果你再次调用函数createNode,那么它也创build第二个节点。 所以如果你删除了createNode函数,那么.query函数创build一个节点,并且在数据库以及nodejs中也是持久的。