Neo4j:创建关系时找不到匹配节点返回错误?

dnph8jn4  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(164)

如果已经有人问过这个问题,我很抱歉,但我找不到答案。
我想在尝试创建节点之间的关系时出错,其中一个或两个节点都不存在
例如,下面的代码没有返回任何结果,但我希望它引发一个错误,让我知道这些节点不存在,这样我就可以在应用程序中显示错误:

MATCH (user1: User{uuid: '123'}), (user2: User{uuid: '456'})
CREATE (user1)-[:LIKES]->(user2)

请假设数据库为空,因此没有匹配的节点
我试图添加一个约束,但我不知道如何处理它,如果这是可能的-你能帮助请?

hmmo2u0o

hmmo2u0o1#

当查询成功找到两个节点时,它可以返回一些东西(比如新的关系),而不是错误。如果查询不返回任何内容,则意味着一个或两个节点都不存在。
举例来说:

MATCH (user1: User{uuid: '123'}), (user2: User{uuid: '456'})
CREATE (user1)-[r:LIKES]->(user2)
RETURN r;
06odsfpq

06odsfpq2#

我想这样的东西会起作用:

OPTIONAL MATCH (user1: User{uuid: '123'})
WITH user1, CASE WHEN user1 IS NULL THEN true ELSE FALSE END AS nodeNotFound
CALL apoc.util.validate(nodeNotFound,'User 1 with given property and label not found!', [404]) 
OPTIONAL MATCH (user2: User{uuid: '456'})
WITH user1, user2, CASE WHEN user2 IS NULL THEN true ELSE FALSE END AS nodeNotFound
CALL apoc.util.validate(nodeNotFound,'User 2 with given property and label not found!', [404])
WITH user1,user2
MERGE (user1)-[:LIKES]->(user2)

相关问题