目前我正在使用Transactional HTTP端点删除所有节点和关系。我可以使用浏览器来做到这一点。但是,当我这样做时,声明没有得到承诺。以下是我试图实现它的方式。
URI: http://xyz:7479/db/data/transaction
方法:POST Content-Type:application / json
{ "statements" : [ { "statement" : "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r" } ] }
回复:{"commit":"http://xyz:7479/db/data/transaction/172/commit","results":[{"columns":[],"data":[]}],"transaction":{"expires":"Mon, 15 Sep 2014 14:15:31 +0000"},"errors":[]}
能告诉我我是否正确行事吗?以及为什么节点没有被删除?或者还有其他替代方式。
提前致谢。
答案 0 :(得分:1)
从您看来,您尝试使用事务端点删除节点。这没关系,但您必须提交事务才能使更改生效。提交URL将通过响应发送回给您(在您的示例中为http://xyz:7479/db/data/transaction/172/commit
)。每笔交易都有所不同,因此您必须发送一封请求,该请求的网址与发送给您的网址完全相同。
只需将/commit
添加到原始网址,即可避免发送第二个提交交易的请求:
http://xyz:7479/db/data/transaction/commit
这将导致事务在单个请求中启动和提交。你可以阅读它in the manual。
编辑:如其他人所述,下面描述的终点是弃用的:
话虽如此,该事务通常仅针对复杂的用例(当一个依赖于另一个时至少有两个查询)。在您的示例中,似乎不需要事务。您可以使用here所述的普通旧/db/data/cypher
端点。
您的请求正文可能如下所示:
{
"query" : "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r",
"params" : {}
}
请记住添加Accept
和Content-Type
标题。
答案 1 :(得分:1)
正如@Maciej所提到的,uri应该以/ commit结束。
BTW身体不对,这个是针对已弃用的cypher端点。
它应该包含类似的内容:
{ "陈述":[{"陈述":" MATCH(n)可选匹配(n) - [r] - ()DELETE r,n" }] }
请参阅文档: