Den bedste mulighed, da foreslået i kommentarerne af elclanrs , er at eksportere et løfte:
// database.js
var MongoClient = require('mongodb').MongoClient,
Q = require('q'),
connect = Q.nbind(MongoClient.connect, MongoClient);
var promise = connect(/* url */);
module.exports = {
connect: function () {
return promise;
}
}
// app.js
var database = require('./database');
database.connect()
.then(function (db) {
app.get('/', function (req, res) {
db.collection(/* … */);
});
})
.catch(function (err) {
console.log('Error connecting to DB:', err);
})
.done();
(Jeg bruger fantastisk Q bibliotek her.)
Nedenfor er den gamle version af mit svar, efterladt for historiens skyld (men hvis du ikke vil bruge løfter, i stedet for at gå den vej, bør du bruge Matts svar ).
Dens ulempe er, at den åbner en forbindelse hver gang du require('database.js)
(undt!)
// DO NOT USE: left for the sake of history
// database.js
var MongoClient = require('mongodb').MongoClient;
function connect(cb) {
MongoClient.connect(/* the URL */, cb);
}
module.exports = {
connect: connect
}
// app.js
var database = require('./database');
database.connect(function (err, db) {
app.get('/', function (req, res) {
db.collection(/* … */);
});
});