当您使用REST batch operations endpoint提交多个查询时,该过程是事务性的。来自文档:
“此服务是事务性的。如果执行的任何操作失败(返回非2xx HTTP状态代码),则将回滚事务并撤消所有更改。”
我想提交多个查询,如果第一个查询失败,则回滚整个事务。这方面的一个例子可能如下:
如果身份验证用户查询无法找到经过身份验证的用户,我希望cypher查询让Neo4j返回非2xx代码,这样第二个查询就不会运行。因为第一个查询是有效的查询,所以它不会使Neo4j返回非2xx代码,而是返回null,因为它找不到经过身份验证的用户。
有办法做到这一点吗?
可能的解决方法(因此其中一个不会作为答案添加):
答案 0 :(得分:1)
使用transactional Cypher Endpoint。
首先,将您的身份验证查询发送到/db/data/transaction
,如果您没有找到用户删除tx-URL /db/data/transaction/<txid>
。否则将更新查询发布到/db/data/transaction/<txid>/commit
。