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

use una variable global para compartir db entre módulos

Por lo general, incluyo un archivo de utilidades del proyecto que contiene varias de estas cosas, solo para hacerlo más fácil. Funciona como un pseudo global, pero sin muchos de los problemas habituales que conllevan los globales.

Por ejemplo,

proyectoUtils.js

module.exports = {

  initialize: function(next){
    // initialization actions, there can be many of these
    this.initializeDB(next);
  },

  initializeDb: function(next){
    mongoClient.open(function(err, mongoClient) {
      if(err) return next(err);
      module.exports.db = mongoClient.db(DB);
      next();
    });
  }
}

aplicación.js

var projectUtils = require('projectUtils');

// (snip)
projectUtils.initialize(function(err) {
  if(err) throw err; // bad DB initialization
  // After this point and inside any of your routes,
  // projectUtils.db is available for use.
  app.listen(port);
}

Al usar una función de inicialización () asíncrona, puede estar seguro de que todas las conexiones de la base de datos, E/S de archivos, etc., se realizan antes de iniciar el servidor.