是否存在mongoose connect错误回调

时间:2011-07-13 09:00:49

标签: javascript mongodb node.js mongoose

如果mongoose无法连接到我的数据库,如何设置错误处理的回调?

我知道

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

但有点像

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

6 个答案:

答案 0 :(得分:111)

连接时,您可以在回调中选择错误:

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

答案 1 :(得分:36)

你可以使用很多猫鼬回叫,

// 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/

答案 2 :(得分:21)

如果有人发生这种情况,我正在运行的Mongoose版本(3.4)按照问题中的说明工作。因此以下内容可能会返回错误。

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

答案 3 :(得分:2)

迟到的答案,但是如果你想让服务器保持运行,你可以使用它:

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

答案 4 :(得分:2)

正如我们在Error Handling的月光文档中看到的那样,由于connect()方法返回了Promise,所以诺言catch是用于猫鼬连接的选项。

因此,要处理初始连接错误,应将.catch()try/catchasync/await一起使用。

通过这种方式,我们有两个选择:

使用.catch()方法:

mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }).
catch(error => console.error(error));

或使用try / catch:

try {
    await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
    console.error(error);
}

恕我直言,我认为使用catch是更干净的方法。

答案 5 :(得分:0)

  • 处理(捕获)连接异常
  • 处理其他连接错误
  • 成功连接后显示一条消息
mongoose.connect(
  "mongodb://..."
).catch((e) => {
  console.log("error connecting to mongoose!");
});
mongoose.connection.on("error", (e) => {
  console.log("mongo connect error!");
});
mongoose.connection.on("connected", () => {
  console.log("connected to mongo");
});