Du kan bruge hændelse til at håndtere det som tilbagekald.
Og måske have din globale variabel, der vil identificere, at den ikke er forbundet.
Du kan have separate db.js
fil, der opfører sig som modul. Og du kan have funktion til at få afhentning fra det.
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å for at bruge det:
var db = require('./db.js');
db.get('users', function(err, collection) {
if (!err) {
collection.find({ ...
} else {
console.log(err);
}
});
Beklager, har lige bemærket, at du bruger Mongoose, som kan være lidt anderledes.