Node-Neo4j:如何检查删除节点的密码查询是否成功?

Node-Neo4j: How to check if cypherquery to delete node succeeded?

我正在使用 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) 密码脚本中存在语法错误(我认为这是通过错误值检测到的)

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

这是not well documented,但是可以这样访问删除的节点数:

result.summary.counters.nodesDeleted()

您会在我的 link 中看到它引用了 StatementStatistics class,但是 class 没有在文档中的任何地方定义(这看起来像遗漏,因为它是 public API)。您可以在 ResultSummarysource 中找到 class 的定义(它还有关系计数器和其他一些东西)。