MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy można inicjować eksporty asynchronicznie w module node.js?

Nie możesz pisać do exports po opuszczeniu pliku. Musisz blokować. Aby uniknąć blokowania, użyłbym leniwego ładowania zasobów.

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

Użyj emiterów zdarzeń, aby emulować leniwe ładowanie. Możesz uogólnić do LazyLoadedCollection klasa/obiekt, aby kod był czystszy / bardziej SUCHY.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose nadpisuje dokument zamiast pól `$set`

  2. Wydajność mangusty Node.js

  3. Jak zrobić sortowanie alfanumeryczne w mongoDB?

  4. Zapytanie Mongodb z polami w tych samych dokumentach

  5. Co się dzieje, gdy mongodb zabraknie pamięci?