コメントで提案 elclanrs 、promiseをエクスポートすることです:
// 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 を使用しています ここにライブラリがあります。)
以下は、歴史のために残された私の答えの古いバージョンです(ただし、promiseを使用したくない場合は、その道を進む代わりに、マットの答え 。
その欠点は、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(/* … */);
});
});