Подтвердить что ты не робот

Есть ли обратная связь с ошибкой соединения mongoose

как я могу установить обратный вызов для обработки ошибок, если mongoose не может подключиться к моей БД?

Я знаю

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

но есть что-то вроде

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

?

4b9b3361

Ответ 1

При подключении вы можете получить ошибку в обратном вызове:

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

Ответ 2

существует много обратных вызовов мангуста, которые вы можете использовать,

// 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); 
  }); 
}); 

Ответ 3

В случае, если кто-то случится с этим, версия Mongoose, с которой я работаю (3.4), работает, как указано в вопросе. Таким образом, следующее может возвращать ошибку.

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

Ответ 4

Поздний ответ, но если вы хотите, чтобы сервер работал, вы можете использовать это:

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

Ответ 5

Как мы видим из более подробной документации по обработке ошибок, поскольку метод 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 - более чистый способ.