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

Subskrypcja kolekcji Meteor.Users

Jeśli chcesz, aby ta konfiguracja działała, musisz wykonać następujące czynności:

Meteor.publish('thisNameDoesNotMatter', function () {
  var self = this;
  var handle = Meteor.users.find({}, {
    fields: {emails: 1, profile: 1}
  }).observeChanges({
    added: function (id, fields) {
      self.added('thisNameMatters', id, fields);
    },
    changed: function (id, fields) {
      self.changed('thisNameMatters', id, fields);
    },
    removed: function (id) {
      self.removed('thisNameMatters', id);
    }
  });

  self.ready();

  self.onStop(function () {
    handle.stop();
  });

});

Nie po stronie klienta, musisz zdefiniować kolekcję tylko po stronie klienta:

directories = new Meteor.Collection('thisNameMatters');

i zasubskrybuj odpowiedni zestaw danych:

Meteor.subscribe('thisNameDoesNotMatter');

To powinno działać teraz. Daj mi znać, jeśli uważasz, że to wyjaśnienie nie jest wystarczająco jasne.

EDYTUJ

Tutaj self.added/changed/removed metody działają mniej więcej jako dyspozytor zdarzeń. Krótko mówiąc, udzielają instrukcji każdemu klientowi, który zadzwonił

Meteor.subscribe('thisNameDoesNotMatter');

o aktualizacjach, które należy zastosować w kolekcji klienta o nazwie thisNameMatters zakładając, że ta kolekcja istnieje. Nazwa - przekazana jako pierwszy parametr - może być wybrana niemal dowolnie, ale jeśli nie ma odpowiedniej kolekcji po stronie klienta, wszystkie aktualizacje zostaną zignorowane. Pamiętaj, że ta kolekcja może być tylko po stronie klienta, więc niekoniecznie musi odpowiadać „prawdziwej” kolekcji w Twojej bazie danych.

Zwracanie kursora z publish metoda jest tylko skrótem do powyższego kodu, z tą różnicą, że zamiast naszego theNameMatters używana jest nazwa aktualnej kolekcji . Ten mechanizm w rzeczywistości pozwala na tworzenie tylu „luster” zestawów danych, ile tylko zechcesz. W niektórych sytuacjach może to być całkiem przydatne. Jedynym problemem jest to, że te „kolekcje” będą tylko do odczytu (co ma sens BTW), ponieważ jeśli nie są zdefiniowane na serwerze, odpowiednie metody „wstaw/aktualizuj/usuń” nie istnieją.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $indexOfBytes

  2. MongoDB $concat

  3. Jak ograniczyć liczbę aktualizacji dokumentów w mongodb

  4. MongoDB:wypisz „id” zamiast „_id”

  5. Śledzić wydajność MongoDB?