web-dev-qa-db-ja.com

マングース接続エラーコールバックはありますか

mongooseがDBに接続できない場合、エラー処理のコールバックを設定するにはどうすればよいですか?

私は知っています

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

しかし、のようなものがあります

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

65
pkyeck

接続すると、コールバックでエラーを取得できます。

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

使用できる多くのマングースコールバック、

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

36
thisarattr

誰かがこれに遭遇した場合、私が実行しているMongooseのバージョン(3.4)は質問で述べられているように機能します。したがって、以下はエラーを返す可能性があります。

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

遅い答えですが、サーバーを実行し続けたい場合は、これを使用できます:

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

エラー処理 のmoongoseドキュメントで確認できるように、 connect() メソッドはPromiseを返すため、promise catchは、使用するオプションですマングース接続。

したがって、初期接続エラーを処理するには、.catch()または_try/catch_を_async/await_と組み合わせて使用​​する必要があります。

このように、2つのオプションがあります。

.catch()メソッドの使用:

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

またはtry/catchを使用:

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

私見、catchを使用する方がよりクリーンな方法だと思います。

0
coderade