我目前使用[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。 –