Najlepsza opcja, ponieważ sugerowane w komentarzach autorstwa elclanrs , jest wyeksportowanie obietnicy:
// 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();
(Używam niesamowitego Q biblioteka tutaj.)
Poniżej znajduje się stara wersja mojej odpowiedzi, pozostawiona ze względu na historię (ale jeśli nie chcesz korzystać z obietnic, zamiast iść tą drogą, powinieneś użyć Odpowiedź Matta ).
Jego wadą jest to, że otworzy połączenie za każdym razem, gdy require('database.js)
(bummer!)
// 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(/* … */);
});
});