Db.open отваря връзката към mongodb и връща препратка към себе си. Вижте тук за изходния код:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245
Всичко, което искате, е да отложите стартирането на своето експресно приложение, слушайки неговия порт и получавайки заявки, докато не се установи връзката ви с mongodb.
И така, това, което можете да направите, е следното:
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);
});
Това, в което обаче не съм сигурен, е дали това е добра идея. Това решение не ви позволява да пресъздадете връзката си, ако е имало прекъсване на връзката или сте рестартирали процеса на mongodb. Така че, докато горното може да работи, може би е по-добра идея да създадете метод, който ще обвие създаването на връзка към mongodb.