MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

usa la variabile globale per condividere db tra i moduli

In genere includo un file di utilità di progetto che contiene una serie di queste cose, solo per semplificare. Funziona come uno pseudo globale, ma senza molti dei soliti problemi che i globali comportano.

Ad esempio,

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

Utilizzando una funzione asincrona initialize(), puoi essere sicuro che tutte le connessioni al database, i file I/O, ecc., vengano eseguite prima di avviare il server.