MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Добре ли е да инициализирате експорти асинхронно в модул node.js?

Не можете да пишете в exports след като сте напуснали файла. Сигурно блокираш. За да избегна блокирането, бих използвал мързеливо зареждане на ресурси.

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

Използвайте излъчватели на събития, за да емулирате отложено зареждане. Може да искате да обобщите до LazyLoadedCollection клас/обект, за да направите кода по-чист / по-СУХ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. времеви редове и рамка за агрегиране (монго)

  2. Намерете най-новите и най-близките публикации, ограничение до 20

  3. В mongodb-go-driver, как да маршал/демаршал BSON в структура

  4. Mongodb - брой елементи с помощта на addToSet

  5. Entity Framework и MongoDb