NodeJs - 关于命名关系的Neo4j params问题

时间:2014-08-19 11:24:43

标签: node.js neo4j node-neo4j

我无法使用params对象来命名2个节点之间的关系,

这是代码

var neo4j = require('neo4j');
var db = new neo4j.GraphDatabase('http://localhost:7474');

var params = {
    name: {
        firstname: "SRI",
        lastname: "lanka"
    },
    relname: "country"
};

var query = [
    'MATCH (location:PRIMARY {name:"location"})',
    'CREATE UNIQUE (location)-[:{relname}]->({name})'
].join('\n');

db.query(query, params, function(err, results) {
    if (err) throw err;
    console.log(results);

});

这是错误。如何利用参数命名关系

错误:无效的输入'{':预期的空格或rel类型名称(第2行,第28列) “创建独特(位置) - [:{country}] - >({name})”

2 个答案:

答案 0 :(得分:3)

无法参数化关系类型。原因是不同的关系类型可能会导致不同的查询计划。

所以你应该使用例如密码来构建密码字符串。关于关系类型的字符串连接,并在适当的时候使用Cypher参数。

答案 1 :(得分:3)

http://docs.neo4j.org/chunked/stable/cypher-parameters.html

参数可用于WHERE子句中的文字和表达式,用于START子句中的索引值,索引查询以及最后用于节点/关系id。参数不能用作属性名称,关系类型和标签,因为这些模式是编译到查询计划中的查询结构的一部分。