Node.js 如何使用nodejs在neo4j中创建标签
我使用以下方法使用nodejs在Neo4j中创建了一个节点。我想创建一个带有标签和一些属性的节点Node.js 如何使用nodejs在neo4j中创建标签,node.js,neo4j,label,graph-databases,Node.js,Neo4j,Label,Graph Databases,我使用以下方法使用nodejs在Neo4j中创建了一个节点。我想创建一个带有标签和一些属性的节点 var query = [ "CREATE (n:TYPE {props})", "RETURN n", ].join('\n').replace('TYPE','PLAYER'); var params = { props: data, }; neo4jClient.query(query, params, fu
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中创建了两个节点。我不知道内部发生了什么。请在这个问题上给我一些意见 您实际上执行了创建节点的查询(这就足够了)
但是,您可以再次创建一个新节点
node.save()
+node.index()
这两个节点都不是必需的,因为create
查询已经完成了这项工作。它使用以下函数
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本身创建一个节点,所以如果再次调用函数createNode,它也会创建第二个节点。所以,如果您删除了createNode函数,那么.query函数将创建一个节点,并在数据库和nodejs中持久化。谢谢@Michael Hunger。当我删除save和index方法时,它会起作用。但它在Neo4j数据库中保持不变,但在nodejs中不保持不变。意味着如果我在那个节点上创建了一个索引,那么它会给我以下错误。错误:-索引前必须存在节点。这里也提到了救火的方法。(GraphDatabase->createNode方法)