Gestion des délais avec Node.js et mongodb

Je suis actuellement en train de tester la façon dont certains de code se dresse contre le scénario suivant:

  • Node.js l'application est lancé et réussi à établir une connexion avec mongodb
  • Après il a réussi à établir une connexion, le serveur mongodb meurt et toutes les demandes ultérieures d'échouer

Pour ce faire, j'ai le code suivant qui permet d'utiliser le pilote officiel (trouvé ici: https://github.com/mongodb/node-mongodb-native) :

MongoClient.connect('mongodb://localhost:27017/testdb', function(err, db) {
app.get('/test', function(req, res) {
    db.collection('users', function (err, collection) {
        console.log(err);
        if (err) {
            //## POINT 1 ##
            //Handle the error
        }
        else {
            collection.find({ 'username': username }, { timeout: true }).toArray(function(err, items) {
                console.log(err);
                if (err) {
                    //## POINT 2 ##
                    //Handle the error
                }
                else {
                    if (items.length > 0) {
                        //Do some stuff with the document that was found
                    }
                    else {
                        //Handle not finding the document
                    }
                }
            }); 
        }
    });
});

});

Que le serveur mongodb n'est plus en cours d'exécution lorsque la demande est traitée, j'avais fait l'hypothèse que ce soit les points que j'ai étiqueté ## POINT 1 ## ou ##, POINT 2,##, il serait de retour un message d'erreur indiquant un délai d'attente; cependant, cela n'est pas le cas.

J'ai essayé un certain nombre de différents paramètres (y compris celui que vous pouvez voir ici, qui autorise explicitement le curseur de délai d'attente), mais je n'arrive pas à l'activer en aucune façon. Dans chaque configuration, j'ai essayé Node.js va tout simplement de garder en attente pour le trouver() opération de rappel et il ne fait jamais.

Si je commence le Node.js application avant mongodb en cours d'exécution, il attrape l'erreur dans la connexion en rappel très bien, mais si la connexion meurt après qu'il ne semble pas gérer cela de toute façon.

Est-il un paramètre que je suis absent ou est-il aucun moyen de détecter les connexions étant terminé après qu'ils ont été mis en place?

Edit: juste pour être clair, le nom d'utilisateur de la variable utilisée dans la méthode de recherche est effectivement déclaré dans mon code, le code que j'ai mis dans ce post est une version réduite pour illustrer la structure et la vérification d'erreur.

source d'informationauteur rastating