Най-добрият вариант, като предложено в коментарите от elclanrs , е да експортирате обещание:
// 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();
(Използвам страхотен Q библиотека тук.)
По-долу е старата версия на моя отговор, оставена в името на историята (но ако не искате да използвате обещания, вместо да вървите по този път, трябва да използвате Отговорът на Мат ).
Недостатъкът му е, че ще отваря връзка всеки път, когато require('database.js)
(жалко!)
// 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(/* … */);
});
});