sql >> Database >  >> NoSQL >> MongoDB

Is het oké om exports asynchroon te initialiseren in een node.js-module?

U kunt niet schrijven naar exports nadat u het bestand hebt verlaten. Je moet blokkeren. Om te voorkomen dat ik wordt geblokkeerd, zou ik lui laden van bronnen gebruiken.

var carCol;
var carEmitter = new require("events").EventEmitter;


exports.getCars = function(callback) {
  // if no car collection then bind to event
  if (carCol === undefined) {
    carEmitter.on("cars-ready", function() {
      callback(carCol);
    });
  } else {
    // we have cars, send them back
    callback(carCol);
  }
}

db.collection("cars", function(err, col) {
  // store cars
  carCol = col;
  // tell waiters that we have cars.
  carEmitter.emit("cars-ready");
});

Gebruik gebeurteniszenders om lui laden na te bootsen. Misschien wil je generaliseren naar een LazyLoadedCollection class/object om de code netter / DROOG te maken.



  1. Waarom eindig ik met java.lang.IllegalArgumentException voor Casbah / Java MongoDB Driver?

  2. Python &Redis:best practices voor Manager/Worker-applicaties

  3. Hoe krijg je een meervoudig resultaat in mangoest en combineer je het in één enkele reactie?

  4. Hoe de MongoDB-insertprestaties te verbeteren