De beste optie, zoals suggereerde in de opmerkingen door elclanrs , is een belofte exporteren:
// 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();
(Ik gebruik geweldige Q bibliotheek hier.)
Hieronder staat de oude versie van mijn antwoord, links voor de geschiedenis (maar als je geen beloften wilt gebruiken, in plaats van die weg te gaan, moet je Matts antwoord ).
Het nadeel is dat het een verbinding zal openen elke keer dat je require('database.js)
(fout!)
// 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(/* … */);
});
});