![](/img/trans.png)
[英]What is the proper way to close a camera in Windows 8 Javascript?
[英]What is the proper way to close a session using neo4j-javascript-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);
}
});
在兩種情況下我都可以正確關閉會話嗎? 如果沒有,兩種情況下關閉會話的正確方法是什么?
請幫忙,這幾天來一直令人頭疼=(
對於第一種情況,您可以做一些簡單的事情:
const neo4jsession = driver.session();
try {
let result = await neo4jsession.writeTransaction(tx => tx.run("Cypher Query") )
}
catch( err } {
reject(err);
}
finally {
neo4jsession.close();
}
對於第二種情況,您可以使用相同的模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.