sql >> Databasteknik >  >> NoSQL >> MongoDB

Är det ok att initiera exporter asynkront i en node.js-modul?

Du kan inte skriva till exports efter att du har lämnat filen. Du måste blockera. För att undvika att blockera skulle jag använda lat laddning av resurser.

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

Använd händelsesändare för att efterlikna lat laddning. Du kanske vill generalisera till en LazyLoadedCollection klass/objekt för att göra koden snyggare / mer DRY.



  1. kan inte kompilera mongo-c-drivrutinexempel

  2. Mongo Triple Compound Index

  3. MongoDB SSPL-licensändringsuppdatering

  4. Hur uppdaterar man ett stort antal dokument i MongoDB mest effektivt?