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

Er det ok at initialisere eksporter asynkront i et node.js-modul?

Du kan ikke skrive til exports efter du har forladt filen. Du må blokere. For at undgå at blive blokerende ville jeg bruge doven indlæsning af ressourcer.

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

Brug hændelsesudsendere til at efterligne doven indlæsning. Du vil måske generalisere til en LazyLoadedCollection klasse/objekt for at gøre koden pænere / mere TØRT.



  1. Logisk ELLER for to forskellige felter i $hvor forespørgsler i mongodb

  2. Meteor:Sådan skriver du en publiceringsfunktion, der indeholder brugernavnet

  3. Slaget om NoSQL-databaserne - Sammenligning af MongoDB og Cassandra

  4. MongoDB Aggregation:Dobbelt opslag og flet opslagssvar til det respektive objekt