web-dev-qa-db-fra.com

y a-t-il un rappel d'erreur de connexion mangouste

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) { ... });

?

65
pkyeck

Lorsque vous vous connectez, vous pouvez détecter l'erreur dans le rappel:

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

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/

36
thisarattr

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) { ... });
21
Asta

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);
});
2
vcanales

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.

0
coderade