2

我对sailsJS 和Neo4J 很陌生,我的障碍是在两个具有参考ID 的节点之间创建关系。

我的代码示例:

    params.id = 'b8995544-02fc-4148-807f-d9c9f0ebd60f';
    var q = [
        'MATCH (w:word{id:'+ JSON.stringify(params.id)+ '}),(a:audiofiles{wordId:'+JSON.stringify(params.id)+'}) CREATE (w)-[r:HASMANY]->(a) RETURN r' 
    ];
    connections[connection].connection.query(q.join(' '), {}).then(function (result) {
        console.log(result);
        cb(null, result);
        }, function (err) {
        cb(err, null);
        console.log(err);
    });

我的输出是:

     [ 'MATCH (w:word{id:"faedcf89-b323-48f4-9c29-f4396822f83c"}),(a:audiofiles{wordId:"faedcf89-b323-48f4-9c29-f4396822f83c"}) 
    CREATE (w)-[r:HASMANY]->(a) RETURN r' ]

    { columns: [ 'r' ],
 data: [],
   status:
      { httpCode: '200',
        statusCode: '200',
        httpMessage: 'OK',
        httpDescription: 'Request succeeded without error' } }

即使那样,在 Neo4J 上创建关系也没有任何问题,我无法在这个框架上进行调试。任何人都可以帮助我在这些之间没有建立关系的根本原因是什么。

4

1 回答 1

1

当您返回 http-200 时,不确定您在哪里看到问题,这很好。

如果您的意思data是空的-> 它将包含新创建的关系的属性,而您没有,它将不包含数据。您也可以退货id(r)type(r)

在这种情况下,可能只是您的 id 中某处有错字。或属性名称或其他。word如果您的 MATCH 实际找到和 ,请尝试手动运行查询audiofiles。(顺便说一句。标签通常大写,而不是小写)

你应该使用参数!

params.id = 'b8995544-02fc-4148-807f-d9c9f0ebd60f';
var q = 
    'MATCH (w:word{id:{id}}), (a:audiofiles{wordId:{id}}) CREATE (w)-[r:HASMANY]->(a) RETURN r';
connections[connection].connection.query(q, params).then(function (result) {
    console.log(result);
    cb(null, result);
    }, function (err) {
    cb(err, null);
    console.log(err);
});
于 2015-10-12T12:10:41.453 回答