Du kan använda händelse för att hantera det som återuppringning.
Och kanske ha din globala variabel som identifierar att den inte är ansluten.
Du kan ha separata db.js
fil, som kommer att fungera som modul. Och du kan ha funktion för att få insamling från den.
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'));
}
}
Så för att använda det:
var db = require('./db.js');
db.get('users', function(err, collection) {
if (!err) {
collection.find({ ...
} else {
console.log(err);
}
});
Tyvärr, märkte precis att du använder Mongoose, som kan skilja sig något.