5

我正在使用 node-neo4j npm 模块,并使用 db.cypherquery() 调用从我的节点 js 应用程序调用密码查询。我正在尝试删除两个节点之间的关系,我想检测删除是成功还是失败。

参考下面的代码片段:

var cypherQuery = "MATCH (u1:User {id: '10'})-[r:LIKES]->(u2:User {id: '20'}) DELETE r;";
db.cypherQuery(cypherQuery, function(err, result){
            if(err) throw err; //does err indicate that delete failed, or something else (such as a syntax error in the cypher query)?

//do something based on whether delete succeeded or failed here

});

那么,在上面,检测以下情况的最佳方法是什么:1)没有找到匹配关系,所以没有什么要删除的2)找到了关系并成功删除了3)找到了关系,但有一些删除时的其他错误 4) 密码脚本中存在语法错误(我认为这是通过 err 值检测到的)

4

2 回答 2

8

您可以同时执行 DELETE 和 RETURN,这样DELETE r RETURN COUNT(r)将删除匹配的 r,并返回已删除 r 的数量(或已删除RETURN r的 r 列表)

于 2017-05-08T17:44:15.913 回答
1

没有很好的记录,但是可以像这样访问删除的节点数:

result.summary.counters.nodesDeleted()

您将在我的链接中看到它引用了StatementStatistics该类,但该类未在文档中的任何地方定义(这似乎是一个遗漏,因为它是一个公共 API)。您可以在源代码中找到该类的定义ResultSummary(它也有关系计数器和一堆其他东西)。

于 2019-06-23T01:59:49.557 回答