我正在使用其余的api在neo4j中的事务中创建一些节点。在创建所有节点之后(在一个事务中通常介于3和5之间),我必须在它们之间创建一些关系。要做到这一点,我当然需要节点的位置,这是我的问题的根源。我无法弄清楚如何获得这个位置。
根据文档,我应该能够在创建节点后从response-object获取节点的位置,如下所示:
nodeLocation = response.getLocation();
但在交易中,这当然会返回交易的网址:
http://localhost:7474/db/data/transaction/108
然后我想,如果我查询刚刚创建的节点,也许在该响应中我可以找到该位置。同样,根据文档,节点位置应该在字段self中的json-structure扩展中显示。
"self" : "http://localhost:7474/db/data/node/357",
但是我对查询的回复似乎没有包含扩展结构。
这是我使用的查询:
{"statements": [ {"statement": "MATCH (p:POST {sn_id: 'TW', id: '536982477664190465'} ) RETURN p"} ] }
我把它发送到公开交易,我得到了回复:
GET to http://localhost:7474/db/data/transaction/108 returned status code 200, returned data: {"commit":"http://localhost:7474/db/data/transaction/108/commit","results":[{"columns":["p"],"data":[]}],"transaction":{"expires":"Mon, 24 Nov 2014 20:40:34 +0000"},"errors":[]}
为了完整起见,这是我查询的代码:
String payload = "{\"statements\": "
+ "[ "
+ "{\"statement\": "
+ "\"MATCH (p:POST {sn_id: 'TW', id: '536982477664190465'} ) RETURN p\""
+ "} "
+ "] "
+ "}";
logger.trace("sending cypher {} to endpoint {}", payload, endpointLoc);
WebResource resource = Client.create().resource( endpointLoc );
ClientResponse response = resource
.accept( MediaType.APPLICATION_JSON )
.type( MediaType.APPLICATION_JSON )
.entity( payload )
.get(ClientResponse.class);
//.post( ClientResponse.class );
String responseEntity = response.getEntity(String.class).toString();
int responseStatus = response.getStatus();
logger.trace("GET to {} returned status code {}, returned data: {}",
endpointLoc, responseStatus,
responseEntity);
JSONParser reponseParser = new JSONParser();
Object responseObj = reponseParser.parse(responseEntity);
JSONObject jsonResponseObj = responseObj instanceof JSONObject ?(JSONObject) responseObj : null;
if(jsonResponseObj == null)
throw new ParseException(0, "returned json object is null");
String result = (String) jsonResponseObj.get("results").toString();
logger.trace("result is {} ", result);
String error = (String) jsonResponseObj.get("errors").toString();
我错过了什么吗?我需要使用特殊电话吗?
有人可以帮我吗?提前谢谢,
基督教
答案 0 :(得分:0)
您需要什么节点网址?
这是旧的 RESTful表示。您可以通过使用旧的HTTP端点/db/data/cypher
或更好地通过指定(非常详细)resultDataContents
type REST
来获取它
您还可以并行指定其他类型,如“行”和“图形”。
{"statements": [
{"statement": "MATCH (p:POST {sn_id: 'TW', id: '536982477664190465'} ) RETURN p",
"resultDataContents":["REST"]}
] }