La meilleure option, car suggéré dans les commentaires par elclanrs , est d'exporter une promesse :
// 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();
(J'utilise génial Q bibliothèque ici.)
Vous trouverez ci-dessous l'ancienne version de ma réponse, laissée pour l'histoire (mais si vous ne voulez pas utiliser de promesses, au lieu d'emprunter cette voie, vous devez utiliser Réponse de Matt ).
Son inconvénient est qu'il ouvrira une connexion chaque fois que vous require('database.js)
(dommage !)
// 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(/* … */);
});
});