sql >> Databasteknik >  >> NoSQL >> MongoDB

använd global variabel för att dela db mellan moduler

Jag inkluderar vanligtvis en projektverktygsfil som innehåller ett antal av dessa saker, bara för att göra det enkelt. Den fungerar som en pseudo-global, men utan många av de vanliga problemen globala medför.

Till exempel,

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

Genom att använda en asynkron initialize()-funktion kan du vara säker på att alla databasanslutningar, fil-I/O, etc., görs innan servern startas.



  1. Mongo Find()-funktionen utesluter inte _id

  2. Auth för lokal strategi för pass verkar bara fungera på localhost med en delad MongoDB-instans

  3. Redisson, arbetskö/dequeu. Strategier för bearbetning av meddelande / element vid ofullständig meddelandehantering vid avstängning av system / pod

  4. Bästa sättet att gruppera efter datum med Mongoid