MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

use a variável global para compartilhar db entre o módulo


Normalmente, incluo um arquivo de utilitários de projeto que contém várias dessas coisas, apenas para facilitar. Funciona como um pseudo global, mas sem muitos dos problemas usuais que os globais acarretam.

Por exemplo,

projectUtils.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();
    });
  }
}

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

Usando uma função assíncrona initialize(), você pode ter certeza de que todas as conexões de banco de dados, E/S de arquivo, etc., são feitas antes de iniciar o servidor.