2

我无法使用 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 列)“CREATE UNIQUE(位置)-[:{ country}]->({name})”

4

2 回答 2

3

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

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

于 2014-08-19T17:54:17.810 回答
3

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

因此,您应该使用例如关于关系类型的字符串连接来构建密码字符串,并在适当的情况下使用密码参数。

于 2014-08-19T11:33:12.267 回答