5

我正在使用Neo4J Javascript 驱动程序从我的 Node.Js 应用程序中查询数据库。

假设我使用以下构造向 Neo4J 发送几个查询(循环通过它们)。

我什么时候需要关闭session,什么时候需要关闭driver

我应该在每个周期结束时(如下所示)还是在所有周期完成后进行?如果是后者,我该怎么做?

还有一个问题——我真的必须关闭driver吗?如果我的应用程序连续运行怎么办?如果它因为某些错误而退出并重新启动怎么办?

var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"));

var session = driver.session();

var transactionQueries = ['MATCH ...', 'MATCH ...'];

for (var key in transactionQueries) {
session
.run(transactionQueries[key])
.subscribe({
onNext: function (record) {
  console.log(record.get('name'));
},
onCompleted: function () {
  session.close();
},
onError: function (error) {
  console.log(error);
}
});
}


driver.close();
4

1 回答 1

0

在我看来,我认为您可以保持连接(驱动程序),但会话应该按照说明打开和关闭neo4j-javascript-driver

// Create a session to run Cypher statements in.
// Note: Always make sure to close sessions when you are done using them!
var session = driver.session()

session
  .run('MERGE (james:Person {name : $nameParam}) RETURN james.name AS name', {
    nameParam: 'James'
  })
  .then(result => {
    result.records.forEach(record => {
      console.log(record.get('name'))
    })
  })
  .catch(error => {
    console.log(error)
  })
  .then(() => session.close())

其他人认为我建议你看看一个 OGM 是否可以帮助你更好地编码,比如neo4j-node-ogm

于 2020-05-26T13:33:57.843 回答