Db.open åbner forbindelsen til mongodb og returnerer en reference til sig selv. Se her for kildekoden:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245
Det eneste, du ønsker, er at vente med at starte din ekspresapp, lytte på dens port og modtage anmodninger, indtil din forbindelse til mongodb er etableret.
Så hvad du kan gøre er dette:
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);
});
Hvad jeg dog ikke er sikker på er, om det er en god idé. Denne løsning tillader dig ikke at genskabe din forbindelse, hvis der har været en forbindelsesbrud, eller du genstartede din mongodb-proces. Så selvom ovenstående måske virker, kan det være en bedre idé at skabe en metode, der vil omslutte oprettelsen af en forbindelse til mongodb.