2011-07-13 2 views
60

Comment puis-je définir un rappel pour le traitement des erreurs si mongoose ne peut pas se connecter à ma base de données?Y at-il un rappel d'erreur de connexion mongoose?

Je Connais

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

mais est-il quelque chose comme

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

?

+3

Pour quiconque trébuche sur cette question, 'connection.on ('error', function (err) {...});' est maintenant implémenté dans 3.X. – Nepoxx

Répondre

104

Lorsque vous vous connectez, vous pouvez chercher l'erreur dans le rappel:

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

Que faire si je veux que mon serveur continue à fonctionner même s'il y a une erreur? Tout ce que j'ai essayé jusqu'ici jette l'erreur et termine le programme. –

+0

Si vous obtenez une erreur ici, vous avez probablement une erreur de configuration ou le serveur de base de données est en panne ... Dans ce cas, vous ne pouvez probablement pas continuer l'application de toute façon. Mais il est également préférable de redémarrer l'application lorsqu'il y a une erreur inattendue de toute façon - sinon c'est dans un état inconnu. – evilcelery

+2

@evilcelery Toutes les requêtes dans mongoose sont mises en mémoire tampon, elles doivent donc toutes être exécutées dès que vous vous reconnectez à db, ce qui est correct et ne doit pas être à l'origine d'un état inconnu. – Andy

21

Au cas où quelqu'un arrive à cela, la version de mangouste que je suis en cours d'exécution (3.4) fonctionne comme il est dit dans la question. Donc, ce qui suit peut renvoyer une erreur.

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

réponse tardive, mais si vous voulez garder le serveur en cours d'exécution, vous pouvez utiliser ceci:

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

il beaucoup callback mangouste 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/

Questions connexes