Node-Neo4j:如何检查Cypher查询以删除节点是否成功?

5
我正在使用node-neo4j npm模块,并使用db.cypherquery()调用从我的node js应用程序调用cypher查询。我试图删除两个节点之间的关系,并且我想检测删除是否成功或失败。
请参考以下代码片段:
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)Cypher脚本中有语法错误(我认为可以通过err值检测到)

1
你应该考虑使用官方的neo4j Javascript驱动程序,而不是一个似乎已经不再维护的第三方包(最后一次提交是大约2年前)。 - cybersam
2个回答

8
您可以同时执行DELETE和RETURN操作,因此DELETE r RETURN COUNT(r)将删除匹配的r,并返回已删除的r数量(或RETURN r以获取已删除的r列表)。

2
这段内容翻译为:这个问题的文档不是很详细,但是可以通过以下方式获取删除节点的数量:

这里

result.summary.counters.nodesDeleted()

你可以在我的链接中看到它引用了StatementStatistics类,但是该类在文档中没有定义(这似乎是一个遗漏,因为它是公共API)。你可以在ResultSummary源代码中找到该类的定义(它还有关系和其他一些计数器)。"最初的回答"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接