Neo4j尝试删除以前删除的关系

时间:2016-05-31 10:47:55

标签: node.js neo4j

我有一个Neo4j Cypher查询,删除与label:A的关系,并将其替换为另一个:与不同节点的关系。

MATCH (n:Item), (m)
WHERE ID(n) = {nodeId} AND ID(m) = {relatedNodeId}
OPTIONAL MATCH (n)-[r:A]->()
DELETE r
CREATE (n)-[:A]->(m)

当我直接加载我正在开发的应用程序的编辑器页面时,它会加载Item和关系,并显示它。

MATCH (n)-[a:A]->(info) WHERE ID(n) = {id} RETURN a, info

然后,当我尝试保存更改(从而运行delete + create query)时,它完全符合我的预期。

但是,如果我回到我的应用程序的概述页面(单页面应用程序),然后返回到同一项目的编辑器页面并尝试再次保存它,则会抛出错误:

neo4j.ClientError: [Neo.ClientError.Statement.EntityNotFound] Unable to load RELATIONSHIP with id 274.]

我不禁想到这是我的客户端应用程序的问题。它只发生在我第二次进入编辑页面时 - 第一次我可以随心所欲地保存和重新保存,但第二次它总是抛出错误,它无法找到与之关系比当前ID低1的ID:数据库中的关系。

我在服务器和客户端应用程序中都检查过,每次{id}{relId}值都相同。它们是数字,在我当前的测试用例中{nodeId}总是7{relatedNodeId}58(在两者之间切换)。

我不明白为什么Neo4j正在寻找我发布的查询的特定关系ID,以及为什么它会在第一次但不是第二次正常工作。我认为它可能是一些隐藏的缓存(因为每次编辑器加载时,它都会再次检索所有节点和关系数据,所以当编辑器第二次加载服务器运行相同的加载查询3次时)我对Neo4j很新,所以在我的查询中可能只是一个新手的错误。

任何能够解释这个问题的人都会对此有所了解吗?

我正在通过Node.js中的neo4j模块使用Neo4j 3.0.0版

0 个答案:

没有答案