Vous pouvez utiliser l'événement pour le gérer en tant que rappel.
Et peut-être avoir votre variable globale qui identifiera qu'il n'est pas connecté.
Vous pouvez avoir db.js
séparé fichier, qui se comportera comme un module. Et vous pouvez avoir une fonction pour en obtenir la collecte.
var mongodb = require('mongodb');
var client;
var collections = { };
new mongodb.Db( ... ).open((function (err, c) {
if (!err) {
client = c;
client.on('close', function() {
client = null; // clear client
collections = { }; // clear old collections
// connection closed
});
} else {
// error connecting
}
});
// get collection
exports.get = function(name, callback) {
if (client) {
if (!collections[name]) {
collections[name] = new mongodb.Collection(client, name);
}
callback(null, collections[name]);
} else {
// can perform reconnecting and then get collection and call callback
callback(new Error('not connected'));
}
}
Alors pour l'utiliser :
var db = require('./db.js');
db.get('users', function(err, collection) {
if (!err) {
collection.find({ ...
} else {
console.log(err);
}
});
Désolé, je viens de remarquer que vous utilisez Mongoose, qui peut être légèrement différent.