MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Node.js et MongoDB, réutilisation de l'objet DB

Vous pouvez toujours écrire un module qui initialise vos connexions à la base de données et les rend accessibles tout au long de votre programme. Par exemple :

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);
  });
};

Je sais que les gens parlent de mise en commun, mais lorsque j'ai effectué une analyse comparative de la mise en commun des connexions mongo par rapport à une connexion unique pour toutes les demandes, la connexion unique a en fait mieux fonctionné. Certes, c'était il y a environ un an, mais je doute que le concept de base ait changé. Toutes les requêtes sont asynchrones, ce n'est donc pas comme si plusieurs connexions étaient nécessaires pour effectuer des requêtes simultanées.

En ce qui concerne MongoClient, je suppose que c'est la nouvelle syntaxe qu'ils encouragent. Quoi qu'il en soit, il s'agit essentiellement d'un client objet que vous souhaitez conserver et rendre accessible quel que soit le style que vous utilisez.