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

Přihlášení k odběru Meteor.Users Collection

Pokud chcete, aby toto nastavení fungovalo, musíte provést následující:

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

});

Ne na straně klienta musíte definovat kolekci pouze na straně klienta:

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

a přihlaste se k odběru příslušné datové sady:

Meteor.subscribe('thisNameDoesNotMatter');

Nyní by to mělo fungovat. Dejte mi vědět, pokud si myslíte, že toto vysvětlení není dostatečně jasné.

UPRAVIT

Zde je self.added/changed/removed metody fungují víceméně jako dispečer událostí. Stručně řečeno, dávají pokyny každému klientovi, který zavolal

Meteor.subscribe('thisNameDoesNotMatter');

o aktualizacích, které by měly být aplikovány na klientskou kolekci s názvem thisNameMatters za předpokladu, že tato sbírka existuje. Název – předaný jako první parametr – lze zvolit téměř libovolně, ale pokud na straně klienta neexistuje žádná odpovídající kolekce, všechny aktualizace budou ignorovány. Upozorňujeme, že tato kolekce může být pouze na straně klienta, takže nemusí nutně odpovídat „skutečné“ kolekci ve vaší databázi.

Vrácení kurzoru z vašeho publish metoda je to pouze zkratka pro výše uvedený kód, s jediným rozdílem, že se místo našeho theNameMatters použije název skutečné kolekce . Tento mechanismus vám ve skutečnosti umožňuje vytvořit tolik „zrcadlení“ vašich datových sad, kolik chcete. V některých situacích to může být docela užitečné. Jediným problémem je, že tyto "kolekce" budou pouze pro čtení (což dává mimochodem zcela smysl), protože pokud nejsou definovány na serveru, odpovídající metody `insert/update/remove' neexistují.



  1. Chyba:Nelze se připojit k Redis na redis:6379:Název nebo služba nejsou známy

  2. Jak zvýším hodnotu čísla v Mongoose?

  3. MongoDB vrátí True, pokud dokument existuje

  4. Jak spočítat počet dokumentů ve sbírce mongodb