Db.open membuka koneksi ke mongodb dan mengembalikan referensi ke dirinya sendiri. Lihat di sini untuk kode sumber:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245
Yang Anda inginkan hanyalah menunda memulai aplikasi ekspres Anda mendengarkan di portnya dan menerima permintaan hingga koneksi Anda ke mongodb telah dibuat.
Jadi yang bisa Anda lakukan adalah ini:
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);
});
Yang saya tidak yakin adalah apakah ini ide yang bagus. Solusi ini tidak memungkinkan Anda untuk membuat ulang koneksi Anda jika koneksi terputus atau Anda memulai kembali proses mongodb Anda. Jadi, sementara hal di atas mungkin berhasil, mungkin ide yang lebih baik untuk membuat metode yang akan membungkus pembuatan koneksi ke mongodb.