Opsi terbaik, sebagai disarankan di komentar oleh elclanrs , adalah mengekspor janji:
// 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();
(Saya menggunakan Q yang luar biasa perpustakaan di sini.)
Di bawah ini adalah versi lama dari jawaban saya, dibiarkan demi sejarah (tetapi jika Anda tidak ingin menggunakan janji, alih-alih pergi ke jalan itu, Anda harus menggunakan Jawaban Matt ).
Kelemahannya adalah ia akan membuka koneksi setiap kali Anda require('database.js)
(menyebalkan!)
// 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(/* … */);
});
});