我目前使用[email protected],无论何时我手动断开MongoDb,mongoose断开/重新连接事件都未被触发纠正,重新连接事件被触发且断开连接在每次断开MongoDb时都未被触发/手动启动。我的问题是处理MongoDb连接和断开状态,以便对服务器的每个请求我会看到MongoDb连接/断开的状态并发送适当的响应(可能是500代码),因为如果MongoDb不是连接的。 要查看这是否是版本问题,我声明版本3.8.x并转到4.0.4以查看事件正确触发的位置。我能够从4.0.x版捕获重新连接事件,但不能断开连接事件。 基本上想知道哪个版本我可以使用连接/断开连接事件正确触发或处理问题的方式。Mongoose断开/重新连接问题
下面是代码处理事件
var db = mongoose.connection;
var connected;
db.on('open', function (ref) {
connected = true;
console.log('open connection to mongo server.');
});
db.on('connected', function (ref) {
global.mongo_conn=true;
console.log('Connected connection to mongo server.');
});
db.on('disconnected', function (ref) {
connected = false;
console.log('disconnected connection.');
});
db.on('disconnect', function (err) {
console.log('Error...disconnect', err);
});
db.on('connecting', function (ref) {
connected = false;
console.log('connecting.');
});
db.on('close', function (ref) {
global.mongo_conn=false;
console.log('close connection.');
connect();
});
db.on('error', function (ref) {
connected = false;
console.log('Error connection.');
//mongoose.disconnect();
global.mongo_conn=false;
});
db.on('reconnected', function() {
global.mongo_conn=true;
console.log('MongoDB reconnected!');
});
db.on('reconnecting', function() {
global.mongo_conn=true;
console.log('reconnecting!');
});
function connect() {
mongoose.connect(config.mongo.uri, opts);
}
connect();
你能告诉你使用捕捉各种事件代码? – robertklep
最后我把它发布在GitHub mongoose的bug列表上,它会被发布到MongoDB的下一个版本请看这里https://github.com/Automattic/mongoose/issues/3183。 –