MongoDb 在 db.close() 上抛出错误
MongoDb throwing error on db.close()
我正在使用以下代码将文档保存到数据库中:
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
我正在使用以下代码将文档保存到数据库中:
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