Du kan altid skrive et modul, som initialiserer dine databaseforbindelser og gør dem tilgængelige i hele dit program. For eksempel:
mongo.js
var mongodb = require('mongodb');
module.exports.init = function (callback) {
var server = new mongodb.Server("127.0.0.1", 27017, {});
new mongodb.Db('test', server, {w: 1}).open(function (error, client) {
//export the client and maybe some collections as a shortcut
module.exports.client = client;
module.exports.myCollection = new mongodb.Collection(client, 'myCollection');
callback(error);
});
};
app.js
var mongo = require('./mongo.js');
//setup express...
//initialize the db connection
mongo.init(function (error) {
if (error)
throw error;
app.listen(80); //database is initialized, ready to listen for connections
});
randomFile.js
var mongo = require('./mongo.js');
module.exports.doInsert = function () {
//use the collection object exported by mongo.js
mongo.myCollection.insert({test: 'obj'}, {safe:true}, function(err, objects) {
if (err)
console.warn(err.message);
});
};
Jeg ved, at folk taler om pooling, men da jeg lavede benchmarking af pooling af mongo-forbindelser vs. en enkelt forbindelse for alle anmodninger, fungerede den enkelte forbindelse faktisk bedre. Indrømmet, det var omkring et år siden, men jeg tvivler på, at det grundlæggende koncept har ændret sig. Alle anmodninger er asynkrone, så det er ikke sådan, at flere forbindelser er nødvendige for at lave samtidige anmodninger.
Hvad MongoClient angår, gætter jeg på, at det er den nye syntaks, de opmuntrer. Uanset hvad, er det i bund og grund en klient objekt, som du vil beholde og gøre tilgængeligt, uanset hvilken stil du bruger.