Vždy můžete napsat modul, který inicializuje vaše databázová připojení a zpřístupní je v celém programu. Například:
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);
});
};
Vím, že lidé mluví o sdružování, ale když jsem srovnával sdružování mongo připojení vs. jediné připojení pro všechny požadavky, jediné připojení ve skutečnosti fungovalo lépe. Je pravda, že to bylo asi před rokem, ale pochybuji, že se základní koncept změnil. Všechny požadavky jsou asynchronní, takže to není tak, že k vytvoření současných požadavků je potřeba více připojení.
Pokud jde o MongoClient, myslím, že to je nová syntaxe, kterou podporují. V každém případě jde v podstatě o klienta objekt, který si chcete ponechat a zpřístupnit bez ohledu na to, jaký styl používáte.