2014-09-15 2 views
0

현재 Transactional HTTP 끝점을 사용하여 모든 노드와 관계를 삭제하고 있습니다. 나는 브라우저를 사용하여 그것을 할 수있다. 그러나 내가 똑같이 할 때 진술은 커밋되지 않습니다. 아래는 내가 그것을 달성하는 방법입니다.neo4j 나머지 API 삭제 예제

URI: http://xyz:7479/db/data/transaction 

방법 : POST 콘텐츠 형식 : 응용 프로그램/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":[]}

당신은 알려 주시기 바랍니다 수 있습니까? 노드가 삭제되지 않는 이유는 무엇입니까? 아니면 다른 대안이 있습니다.

미리 감사드립니다.

답변

1

트랜잭션 끝점을 사용하여 노드를 삭제하려고하는 것으로 보입니다. 이것은 괜찮지 만 변경 사항을 적용하려면 트랜잭션을 커밋해야합니다. 커밋 URL이 응답과 함께 사용자에게 다시 전송됩니다 (예제에서는 http://xyz:7479/db/data/transaction/172/commit). 각 거래마다 다르므로 동일한 URL로 요청을 보내야합니다. 당신은 당신의 원래 URL에 /commit을 추가하여 트랜잭션을 커밋 두 번째 요청을 보내는 피할 수

는 :

http://xyz:7479/db/data/transaction/commit 

이 트랜잭션을 시작하고 단일 요청 내에서 커밋하게됩니다. 당신은 그것에 대해 in the manual 읽을 수 있습니다.


편집 : 하나가에 따라 달라 때

는 트랜잭션이 두 개 이상의 쿼리 (만 복잡한 사용하는 경우에 일반적으로, 그런 말로 미루어 보아 : 엔드 포인트가 사용되지 않습니다 아래에 설명 된 다른 사람에 의해 언급 한 바와 같이 다른). 귀하의 예에서는 거래가 필요하지 않은 것처럼 보입니다. 과 같이 일반적인 이전 /db/data/cypher 끝점을 사용할 수 있습니다.

요청 본문은 다음과 같이 수 :

{ 
    "query" : "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r", 
    "params" : {} 
} 

그냥 AcceptContent-Type 헤더를 추가해야합니다.

+0

당신이 문서에 따라 사용되지 않습니다 언급 요청 본문.나는 복잡한 질의를하고 있는데, 그 중 일부를 꺼냈다. –

1

@Maciej가 언급했듯이 URI는/commit으로 끝나야합니다.

몸이 옳지 않습니다.이 항목은 사용되지 않는 사이퍼 종점 용입니다.

{ "문": [{ "문":이 비슷한 포함해야

"- [R] - (N) MATCH (N) 선택 사양 MATCH() 삭제 R을, N" }] }

설명서를 참조하십시오 :

http://docs.neo4j.org/chunked/stable/rest-api-transactional.html#rest-api-begin-and-commit-a-transaction-in-one-request

+0

아, 네 말이 맞아. 나는 오랫동안 그것을 사용 해왔다. 이후로 언제 비추천입니까? –

+0

@christophe :/commit을 사용하면 잘 작동하지만 커밋 후에도 트랜잭션 내에서 명령문을 실행하면 작동하지 않습니다. –

+0

@MaciejSz 2.1 이후 * 생각합니다. –