Tùy chọn tốt nhất, như được đề xuất trong nhận xét bởi elclanrs , là xuất một lời hứa:
// 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();
(Tôi đang sử dụng Q tuyệt vời thư viện ở đây.)
Dưới đây là phiên bản cũ của câu trả lời của tôi, để lại cho lịch sử (nhưng nếu bạn không muốn sử dụng lời hứa, thay vì đi theo con đường đó, bạn nên sử dụng Câu trả lời củaMatt ).
Nhược điểm của nó là nó sẽ mở một kết nối mỗi khi bạn require('database.js)
(chết tiệt!)
// 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(/* … */);
});
});