सबसे अच्छा विकल्प, जैसे टिप्पणियों में सुझाया गया द्वारा 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(/* … */);
});
});