is there a mongoose connect error callback
how can i set a callback for the error handling if mongoose isn't able to connect to my DB?
i know of
connection.on('open', function () { ... });
but is there something like
connection.on('error', function (err) { ... });
?
When you connect you can pick up the error in the callback:
mongoose.connect('mongodb://localhost/dbname', function(err) {
if (err) throw err;
});
there many mongoose callback you can use,
// 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);
});
});
more on: http://theholmesoffice.com/mongoose-connection-best-practice/
In case anyone happens upon this, the version of Mongoose I'm running (3.4) works as stated in the question. So the following can return an error.
connection.on('error', function (err) { ... });
As we can see on the mongoose documentation for Error Handling, since the connect() method returns a Promise, the promise catch
is the option to use with a mongoose connection.
So, to handle initial connection errors, you should use .catch()
or try/catch
with async/await
.
In this way, we have two options:
Using the .catch()
method:
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true })
.catch(error => console.error(error));
or using try/catch:
try {
await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
console.error(error);
}
IMHO, I think that using catch
is a cleaner way.