Db.open öppnar anslutningen till mongodb och returnerar en referens till sig själv. Se här för källkoden:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245
Allt du vill är att vänta med att starta din expressapp, lyssna på dess port och ta emot förfrågningar tills din anslutning till mongodb har upprättats.
Så vad du kan göra är detta:
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);
});
Vad jag dock inte är säker på är om detta är en bra idé. Den här lösningen tillåter dig inte att återskapa din anslutning om det har skett ett anslutningsavbrott eller om du startade om din mongodb-process. Så även om ovanstående kanske fungerar, kan det vara en bättre idé att skapa en metod som kommer att omsluta skapandet av en anslutning till mongodb.