我正在Node.js中学习MongoDB。我有一个main
函数,它返回指向所需集合的collection
对象。
main()
.then((collection) => {
findDocs(collection)
})
.catch(console.error);
.finally(() => client.close());
我通过传递collection
对象来调用findDocs
函数。但这会失败,并返回PoolClosedError [MongoPoolClosedError]: Attempted to check out a connection from closed connection pool
错误。但如果我删除finally()
块,它会正常工作,但数据库连接不会关闭,正如任何人所预料的那样。
是否有解决此问题的方法或更好地调用回调async
函数的建议?
1条答案
按热度按时间eyh26e7m1#
您必须使用async-await来解决问题:
这里一个例子
或者在调用main函数的函数中使用try-catch闭包,而不是使用then/catch闭包:
示例:
另一个选项是在findDocs结束时关闭客户端: