mongooseがDBに接続できない場合、エラー処理のコールバックを設定するにはどうすればよいですか?
私は知っています
connection.on('open', function () { ... });
しかし、のようなものがあります
connection.on('error', function (err) { ... });
?
接続すると、コールバックでエラーを取得できます。
mongoose.connect('mongodb://localhost/dbname', function(err) {
if (err) throw err;
});
使用できる多くのマングースコールバック、
// 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/
誰かがこれに遭遇した場合、私が実行しているMongooseのバージョン(3.4)は質問で述べられているように機能します。したがって、以下はエラーを返す可能性があります。
connection.on('error', function (err) { ... });
遅い答えですが、サーバーを実行し続けたい場合は、これを使用できます:
mongoose.connect('mongodb://localhost/dbname',function(err) {
if (err)
return console.error(err);
});
エラー処理 の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
を使用する方がよりクリーンな方法だと思います。