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