1
我正在運行帶有mongo連接池的守護進程。它運行罰款天,但最終還是崩潰和每個後續請求得到這個錯誤:處理MongoError的好方法:服務器實例池被破壞
MongoError:服務器實例池被破壞
的代碼與此類似:
var MongoClient = require('mongodb').MongoClient;
var express = require('express');
var app = express();
MongoClient.connect(config.mongo.url, function(err, db) {
app.use('/', function(req, res, next) {
db.collection('somecollection').find({}).toArray(function(err, result) {
console.log(result);
});
})
var server = require('http').Server(app);
server.listen(config.worker.port, function() {
var address = server.address();
logger.info({
address: address.address,
port: address.port
}, 'New Worker created');
});
});
重新啓動的過程中修復這個問題,但我希望應用程序以某種方式優雅地重新連接並重置那裏的「db」對象。
我會嘗試看看我是否可以使用標準驅動程序中的事件來使其工作。唯一的候選人似乎是:http://mongodb.github.io/node-mongodb-native/2.2/api/Db.html#event:error –
@phraktal你能聽到這個事件嗎?我通過文檔查看,但仍然無法理解如何聆聽本地驅動程序的錯誤。請指教,謝謝:) – chaintng