使用neo4j-javascript-driver关闭会话的正确方法是什么?

时间:2019-03-27 07:52:51

标签: javascript neo4j neo4j-driver

现在,我正在执行writeTransactions,按照文档建议关闭neo4j驱动程序会话。

但是,当出现错误时,我还没有找到如何处理session.close()的方法。这可能导致池中的所有连接永不关闭,并且在应用程序启动几天后,我收到很多类似的错误消息:

(node:1) UnhandledPromiseRejectionWarning:
Unhandled promise rejection (rejection id: 5725): 
Neo4jError: Connection acquisition timed out in 60000 ms.

这是驱动程序配置:

const driver = neo4j.driver(
  process.env.NEO4J_URI,
  neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD),
  {
    maxConnectionLifetime: 60 * 60 * 1000, // 1 hour
    maxConnectionPoolSize: 300,
    encrypted: "ENCRYPTION_ON",
    trust: "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES",
    trustedCertificates: [process.env.NEO4J_TRUSTED_CERTS],
    logging: {
      level: 'debug',
      logger: (level, message) => console.log('+++' + level + ' ' + message)
    }
  }
);

这是我在交易中使用驱动程序的两种方式:

1。使用异步/等待并捕获

const neo4jsession = driver.session();

var result = await neo4jsession.writeTransaction(tx =>
  tx.run("Cypher Query")
).catch(err => {
  try {
    neo4jsession.close();
  } finally {
    reject(err);
  }
});

neo4jsession.close();

// Do something with result if not undefined

2。使用then / catch

const neo4jsession = driver.session();

var result = neo4jsession.writeTransaction(tx =>
  tx.run("Cypher Query")
);

result.then(items => {
  neo4jsession.close();
  // do something with items
}).catch(error => {
  try {
    neo4jsession.close();
  } finally {
    reject(error);
  }
});

在两种情况下我都正确关闭了会话吗?如果没有,两种情况下关闭会话的正确方法是什么?

请帮助,这几天来一直令人头疼=(

1 个答案:

答案 0 :(得分:1)

对于第一种情况,您可以做一些简单的事情:

let element = new joint.shapes.standard.Rectangle();

element.attr(
  "label/style",
  "-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;"
);

对于第二种情况,您可以使用相同的模式。