使用neo4j JS驱动程序进行套接字挂起

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用neo4j JS驱动程序进行套接字挂起相关的知识,希望对你有一定的参考价值。

所有。我是neo4j的新手,并尝试使用来自node / express的官方JS驱动程序来命中远程(例如非本地)服务器,但不断收到[错误:套接字挂断]代码:'ECONNRESET'错误。代码如下所示:

router.get('/', function(req, res, next) {
  var driver  = neo4j.driver("bolt://ip.address", neo4j.auth.basic("neo4j", "neo4j"));
  var session = driver.session();
  var query   = "MATCH (p:Person {name:'Sally'})-[r:KNOWS]->(f:Person) RETURN f";

  session
    .run(query)
    .then(function(result) {
      result.records.forEach(function(record) {
        console.log(record._fields);
      });
      session.close();
    })
    .catch(function(error) {
      console.log(error);
    });

  driver.close();
});

我已经在bolt和http上尝试了流式传输和promise技术,所有这些都具有相同的结果。远程服务器配置为接受外部连接,我已经通过golang单独验证了连接。

想法?

答案

感谢Oscar Hane在Github上回答这个问题:

您的问题是您可能在查询完成之前关闭驱动程序。

router.get('/', function(req, res, next) {
  var driver  = neo4j.driver("bolt://ip.address", neo4j.auth.basic("neo4j", "neo4j"));
  var session = driver.session();
  var query   = "MATCH (p:Person {name:'Sally'})-[r:KNOWS]->(f:Person) RETURN f";

  session
    .run(query)
    .then(function(result) {
      result.records.forEach(function(record) {
        console.log(record._fields);
      });
      session.close();
      driver.close();
    })
    .catch(function(error) {
      console.log(error);
      driver.close();
    });
});

以上是关于使用neo4j JS驱动程序进行套接字挂起的主要内容,如果未能解决你的问题,请参考以下文章

Node.js HTTP2 服务器错误:套接字挂起

调用 fork() 后 SSL_accept 挂起

由于lambda闭包或调度程序问题,程序可能会挂起

“在建立安全 TLS 连接之前断开客户端网络套接字” - Neo4j/GraphQL

从另一个线程关闭挂起的 zmq 套接字

Unity 中的简单套接字服务器