参见英文答案 > How do I return the response from an asynchronous call? 33个
我使用以下代码将文档保存到数据库:
MongoClient.connect(mongoUrl, function(error, db) {
console.log('Mongo: error = \'' + error + '\' db = \'' + db + '\'');
insertDocument(db, parsedDocument);
db.close();
});
function insertDocument(db, document) {
db.collection('test').insertOne(document, function(error, result) {
console.log('Save document. error = \'' + error + '\' result = \'' + result + '\'');
});
}
但是,如果我留下db.close()语句,我会在错误对象中得到错误.如果我删除该行,则保存文档.
Received. ID: '04023828-9ef3-4f10-b1d1-108208c9e3b7'
Mongo: error = 'null' db = '[object Object]'
Save document. error = 'MongoError: server localhost:27017 sockets closed' result = 'undefined'
>为什么关闭数据库会导致错误?
>不明确关闭连接是否安全?
解决方法:
1.为什么关闭数据库会导致错误?
您的函数insertDocument是异步执行的.您不是在等待插入完成并立即执行db.close(),这自然会干扰插入操作.
如果需要关闭连接,请在传递给insertDocument的回调中执行此操作.
2.不明确关闭连接是否安全?
实际上,您应该尝试在整个应用程序生命周期中重用连接.由Node驱动程序的主要贡献者查看此评论:https://groups.google.com/d/msg/node-mongodb-native/mSGnnuG8C1o/Hiaqvdu1bWoJ
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。