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

brug global variabel til at dele db mellem moduler

Jeg inkluderer typisk en projektværktøjsfil, der indeholder en række af disse ting, bare for at gøre det nemt. Det fungerer som en pseudo-global, men uden mange af de sædvanlige problemer, globaler medfører.

For eksempel,

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

Ved at bruge en asynkron initialize()-funktion kan du være sikker på, at alle databaseforbindelser, fil-I/O osv. er udført, før serveren startes op.



  1. Hjælp til MongoDB-databasestruktur og bedste praksis

  2. Hvordan henter man et arrays sidste objekt i et indlejret dokument i Mongoose?

  3. Hvordan beholder jeg has_many :through-relationer, når jeg serialiserer til JSON og tilbage i Rails 4.0.3?

  4. mongoexport returnerer videnskabelig (eksponentiel) notation