как я могу установить обратный вызов для обработки ошибок, если mongoose не может подключиться к моей БД?
Я знаю
connection.on('open', function () { ... });
но есть что-то вроде
connection.on('error', function (err) { ... });
?
как я могу установить обратный вызов для обработки ошибок, если mongoose не может подключиться к моей БД?
Я знаю
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);
});
});
В случае, если кто-то случится с этим, версия Mongoose, с которой я работаю (3.4), работает, как указано в вопросе. Таким образом, следующее может возвращать ошибку.
connection.on('error', function (err) { ... });
Поздний ответ, но если вы хотите, чтобы сервер работал, вы можете использовать это:
mongoose.connect('mongodb://localhost/dbname',function(err) {
if (err)
return console.error(err);
});
Как мы видим из более подробной документации по обработке ошибок, поскольку метод connect() возвращает Promise, обещание catch
- это опция для использования с подключением mongoose.
Таким образом, для обработки начальных ошибок подключения вы должны использовать .catch()
или try/catch
с async/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
- более чистый способ.