sql >> Databáze >  >> NoSQL >> MongoDB

Je v pořádku inicializovat exporty asynchronně v modulu node.js?

Nemůžete zapisovat do exports poté, co jste opustili soubor. Musíte blokovat. Abych se vyhnul blokování, použil bych líné načítání zdrojů.

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

Použijte emitory událostí k emulaci líného načítání. Možná budete chtít zobecnit na LazyLoadedCollection třída/objekt, aby byl kód čistší / sušší.



  1. Čtení ze sekundární sady replik v mongodb prostřednictvím javascriptu

  2. Možnosti hostování MongoDB nyní, když je odstraněn doplněk Heroku mLab

  3. Jak vložit stejné datum do mongodb jako načtené z String přes javu?

  4. 'session' není definováno při použití express / redis pro úložiště relací