Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用nodejs在neo4j中创建标签_Node.js_Neo4j_Label_Graph Databases - Fatal编程技术网

Node.js 如何使用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

我使用以下方法使用nodejs在Neo4j中创建了一个节点。我想创建一个带有标签和一些属性的节点

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方法)