comment puis-je définir un rappel pour la gestion des erreurs si la mangouste n'est pas en mesure de se connecter à ma base de données?
je connais
connection.on('open', function () { ... });
mais y a-t-il quelque chose comme
connection.on('error', function (err) { ... });
?
Lorsque vous vous connectez, vous pouvez détecter l'erreur dans le rappel:
mongoose.connect('mongodb://localhost/dbname', function(err) {
if (err) throw err;
});
il y a beaucoup de rappel mangouste que vous pouvez utiliser,
// 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);
});
});
plus sur: http://theholmesoffice.com/mongoose-connection-best-practice/
Au cas où quelqu'un arriverait à ce sujet, la version de Mongoose que j'utilise (3.4) fonctionne comme indiqué dans la question. Ainsi, ce qui suit peut renvoyer une erreur.
connection.on('error', function (err) { ... });
Réponse tardive, mais si vous voulez que le serveur continue de fonctionner, vous pouvez utiliser ceci:
mongoose.connect('mongodb://localhost/dbname',function(err) {
if (err)
return console.error(err);
});
Comme nous pouvons le voir sur la documentation de moongose pour Gestion des erreurs , puisque la méthode connect () renvoie une promesse, la promesse catch
est l'option à utiliser avec une connexion mangouste.
Ainsi, pour gérer les erreurs de connexion initiales, vous devez utiliser .catch()
ou try/catch
Avec async/await
.
De cette façon, nous avons deux options:
Utilisation de la méthode .catch()
:
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }).
catch(error => handleError(error));
ou en utilisant try/catch:
try {
await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
handleError(error);
}
À mon humble avis, je pense que l'utilisation de catch
est la façon la plus propre.