2011-07-13 59 views
60

如果貓鼬不能連接到我的數據庫,我該如何設置錯誤處理的回調?是否有貓鼬連接錯誤回撥

我知道的

connection.on('open', function() { ... }); 

,但有什麼樣

connection.on('error', function (err) { ... }); 

+3

對於任何人在這個問題上磕磕絆絆,connection.on('error',function(err){...});'現在在3.X中實現。 – Nepoxx

回答

104

當你連接,你可以在回調拿起錯誤:

mongoose.connect('mongodb://localhost/dbname', function(err) { 
    if (err) throw err; 
}); 
+0

如果我希望我的服務器即使出現錯誤也能繼續運行,該怎麼辦?我迄今爲止試過的所有東西都會拋出錯誤,然後終止程序。 –

+0

如果您在這裏遇到錯誤,您可能要麼是配置錯誤,要麼是數據庫服務器關閉......在這種情況下,您最有可能無法繼續應用程序。但是,當出現意外錯誤時重啓應用也是最好的 - 否則它處於未知狀態。 – evilcelery

+2

@evilcelery在貓鼬中的所有查詢都被緩衝,所以只要你重新連接到數據庫,它們都應該被執行,這很好,並且不應該是未知狀態的原因。 – Andy

21

如果有人碰巧在此,貓鼬的版本,我跑(3.4)的作品在這個問題說明。所以下面的代碼可以返回一個錯誤。

connection.on('error', function (err) { ... }); 
2

晚的答案,但如果你想保持服務器運行,您可以使用此:

mongoose.connect('mongodb://localhost/dbname',function(err) { 
    if (err) 
     return console.error(err); 
}); 
29

有很多貓鼬回調可以使用,

// CONNECTION EVENTS 
 
// When successfully connected 
 
mongoose.connection.on('connected', function() { 
 
    console.log('Mongoose default connection open to ' + dbURI); 
 
}); 
 

 
// If the connection throws an error 
 
mongoose.connection.on('error',function (err) { 
 
    console.log('Mongoose default connection error: ' + err); 
 
}); 
 

 
// When the connection is disconnected 
 
mongoose.connection.on('disconnected', function() { 
 
    console.log('Mongoose default connection disconnected'); 
 
}); 
 

 
// If the Node process ends, close the Mongoose connection 
 
process.on('SIGINT', function() { 
 
    mongoose.connection.close(function() { 
 
    console.log('Mongoose default connection disconnected through app termination'); 
 
    process.exit(0); 
 
    }); 
 
});

更多關於:http://theholmesoffice.com/mongoose-connection-best-practice/