Zawsze możesz napisać moduł, który inicjuje połączenia z bazą danych i udostępnia je w całym programie. Na przykład:
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);
});
};
Wiem, że ludzie mówią o poolingu, ale kiedy przeprowadziłem analizę porównawczą łączenia połączeń mongo z pojedynczym połączeniem dla wszystkich żądań, pojedyncze połączenie faktycznie działało lepiej. To prawda, było to około rok temu, ale wątpię, żeby zmieniła się podstawowa koncepcja. Wszystkie żądania są asynchroniczne, więc nie jest konieczne wielokrotne nawiązywanie połączeń w celu równoczesnego wysyłania żądań.
Jeśli chodzi o MongoClient, wydaje mi się, że jest to nowa składnia, którą zachęcają. Tak czy inaczej, jest to zasadniczo klient obiekt, który chcesz zachować i udostępnić niezależnie od używanego stylu.