Db.open mở kết nối đến mongodb và trả về một tham chiếu cho chính nó. Xem mã nguồn tại đây: https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245
Tất cả những gì bạn muốn là tiếp tục khởi động ứng dụng express của bạn, lắng nghe trên cổng của nó và nhận yêu cầu cho đến khi kết nối của bạn với mongodb được thiết lập.
Vì vậy, những gì bạn có thể làm là:
var mongodb = require("mongodb"),
express = require("express"),
mongoServer = new mongodb.Server('localhost', 27017),
dbConnector = new mongodb.Db('example', mongoServer),
db;
var app = new express();
app.get('/products', function(req, res, next) {
db.collection('products', function(err, collection) {
if (err) next(new Error(err));
collection.find({}, function(err, products) {
res.send(products);
});
});
});
db_connector.open(function(err, opendb) {
if (err) throw new Error(err);
db = opendb;
app.listen(3000);
});
Điều tôi không chắc là liệu đây có phải là một ý tưởng hay hay không. Giải pháp này không cho phép bạn tạo lại kết nối của mình nếu bị ngắt kết nối hoặc bạn đã khởi động lại quy trình mongodb của mình. Vì vậy, mặc dù cách trên có thể hoạt động, nhưng có thể là một ý tưởng tốt hơn để tạo một phương thức sẽ bao bọc việc tạo kết nối đến mongodb.