1

node.jsでNeo4jへのPOSTリクエストを介して正しいCypherクエリを作成するには?

コード:

var http = require('http');

var options = {
  host: 'a90cfa68c.hosted.neo4j.org',
  port: 7357,
  path: '/db/data/cypher',
  method: 'POST',
  headers: {               
    'Authorization': 'Basic ' + new Buffer("<login>:<password>").toString('base64')                  
  },
  "Content-Type" : "application/json",
  "query" : "START root=node(*) RETURN root" // <--- Doesn't work :(
};

http.request(options, function(res) {
      console.log('STATUS: ' + res.statusCode);
      console.log('HEADERS: ' + JSON.stringify(res.headers));
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
      console.log('BODY: ' + chunk);
      });
}).end();

結果:

STATUS: 400
HEADERS: {"content-length":"340","content-encoding":"UTF-8","content-type":"application/json","access-control-allow-origin":"*","server":"Jetty(6.1.25)"}
BODY: {
  "message" : "You have to provide the 'query' parameter.",
  "exception" : "BadInputException",
  "stacktrace" : [ "org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:63)", "java.lang.reflect.Method.invoke(Method.java:597)", "org.neo4j.server.extension.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:57)" ]
}

期待される結果: すべてのノードのリスト ( Neo4j コンソール
と同じ)POST /db/data/cypher {"query":"START root=node(*) RETURN root"}


解決策(Andrew Palumbo に感謝):

// Changes goes here:
var req = http.request(options, function(res) {
      console.log('STATUS: ' + res.statusCode);
      console.log('HEADERS: ' + JSON.stringify(res.headers));
      res.setEncoding('utf8');
      res.on('data', function (chunk) {   
      console.log('BODY: ' + chunk);
      });
});
// Writing into body:
req.write('{"query":"START root=node(*) RETURN root"}');
req.end();
4

2 に答える 2

3

の認識されないオプションとして「クエリ」を指定しましたが、リクエストの本文としてそれを指定http.requestする必要があります。また、オプション オブジェクトwrite内の「Content-Type」行を移動することもできます。headers

ノード ドキュメントの例を見てみましょう。

http://nodejs.org/api/http.html#http_http_request_options_callback

于 2013-07-25T21:14:45.453 に答える
1

Expressのようなフレームワークの使用を検討することもできます。

于 2013-07-25T21:19:43.240 に答える