sql >> Base de Datos >  >> NoSQL >> MongoDB

Node.js y MongoDB, reutilizando el objeto DB

Siempre puede escribir un módulo que inicialice las conexiones de su base de datos y las haga accesibles a través de su programa. Por ejemplo:

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

aplicación.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
});

archivo aleatorio.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);
  });
};

Sé que la gente habla de la agrupación, pero cuando hice una evaluación comparativa de la agrupación de conexiones mongo frente a una única conexión para todas las solicitudes, la única conexión en realidad funcionó mejor. Por supuesto, esto fue hace aproximadamente un año, pero dudo que el concepto básico haya cambiado. Todas las solicitudes son asincrónicas, por lo que no es necesario realizar varias conexiones para realizar solicitudes simultáneas.

En cuanto a MongoClient, supongo que esa es la nueva sintaxis que están alentando. De cualquier manera, es esencialmente un cliente objeto que desea conservar y hacer accesible independientemente del estilo que utilice.