【问题标题】:Sails Neo4J Create relationship with sails-neo4JSails Neo4J 与sails-neo4J 建立关系
【发布时间】:2016-01-09 19:58:46
【问题描述】:

我对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 上创建关系也没有任何问题,我无法在这个框架上进行调试。任何人都可以帮助我没有在这些之间建立关系的根本原因是什么。

【问题讨论】:

    标签: neo4j waterline node-neo4j


    【解决方案1】:

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

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

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

    你应该使用参数!

    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);
    });
    

    【讨论】:

    • 感谢您的快速回复,我已经编写了代码,但在上面的代码中我没有发现任何 Typo 错误。甚至无法调试问题。