通过单个服务器设置,我从驱动程序接收事件。
mongoose.connect('mongodb://localhost/mydb');
mongoose.connection.on('disconnected', function() {...});
mongoose.connection.on('error', function(err) {...});
使用副本集时(mongoose.connect('mongodb://localhost:27017/mydb,mongodb://localhost:27018/mydb');
),关闭所有连接的集合成员不会触发这些相同的事件。
我对 native 驱动程序的内部结构不太熟悉,我想知道这是否是一个错误,或者我是否需要手动检测这种情况。
我使用的是 Mongoose 3.6.17(mongodb 驱动程序 1.3.18)
Sans mongoose,我尝试了相同的结果(没有来自副本集的事件)。
require('mongodb').MongoClient.connect("mongodb://localhost:27017,localhost:27018/mydb", function(err, db) {
if (db) {
db.on('disconnected', function() {
console.log('disconnected');
}).on('error', function(err) {
console.log('error');
});
}
});
最佳答案
我在 Mongoose 上也遇到了类似的问题,asked on SO还。最近,我发现this issue在 Mongoose GitHub 存储库上,导致 this issue在驱动程序存储库上。
Mongo 驱动程序没有多次发出任何这些事件,and today此问题已在 v1.3.19 上针对单个连接修复。
看来目前“无法修复”。
关于node.js - MongooseJS 是否应该在副本集断开连接时发出事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363564/