MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden Sie die globale Variable, um die Datenbank zwischen den Modulen zu teilen

Normalerweise füge ich eine Projektdienstprogrammdatei hinzu, die eine Reihe dieser Dinge enthält, nur um es einfach zu machen. Es funktioniert wie ein Pseudo-Global, aber ohne viele der üblichen Probleme, die Globals mit sich bringen.

Zum Beispiel

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

Durch die Verwendung einer asynchronen initialize()-Funktion können Sie sicher sein, dass alle Datenbankverbindungen, Datei-I/Os usw. vor dem Start des Servers abgeschlossen sind.