sql >> Database >  >> NoSQL >> MongoDB

Abonneren op Meteor.Users Collection

Als u wilt dat deze configuratie werkt, moet u het volgende doen:

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

});

Nee, aan de clientzijde moet u een verzameling alleen aan de clientzijde definiëren:

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

en abonneer je op de bijbehorende dataset:

Meteor.subscribe('thisNameDoesNotMatter');

Dit zou nu moeten werken. Laat het me weten als je denkt dat deze uitleg niet duidelijk genoeg is.

BEWERKEN

Hier, de self.added/changed/removed methoden fungeren min of meer als een gebeurtenisverzender. Kort gezegd geven ze instructies aan elke klant die belde

Meteor.subscribe('thisNameDoesNotMatter');

over de updates die moeten worden toegepast op de verzameling van de klant met de naam thisNameMatters ervan uitgaande dat deze collectie bestaat. De naam - doorgegeven als de eerste parameter - kan bijna willekeurig worden gekozen, maar als er geen corresponderende verzameling aan de clientzijde is, worden alle updates genegeerd. Houd er rekening mee dat deze verzameling alleen client-side kan zijn, dus het hoeft niet noodzakelijk overeen te komen met een "echte" verzameling in uw database.

Een cursor terugbrengen van uw publish methode is het slechts een snelkoppeling voor de bovenstaande code, met het enige verschil dat de naam van een daadwerkelijke collectie wordt gebruikt in plaats van onze theNameMatters . Met dit mechanisme kunt u zoveel "spiegels" van uw datasets maken als u wilt. In sommige situaties kan dit best handig zijn. Het enige probleem is dat deze "verzamelingen" alleen-lezen zijn (wat volkomen logisch is trouwens) omdat als ze niet op de server zijn gedefinieerd, de bijbehorende `insert/update/remove'-methoden niet bestaan.



  1. ondersteunt hibernate-redis cache op het tweede niveau die wordt gedeeld door verschillende hibernate-instanties?

  2. mongodb $bestaat altijd terugkerende 0

  3. Hoe een verzameling naar CSV in MongoDB exporteren?

  4. Verwijder Redis op Mac OSX. Oudere versie is actief na het installeren van de update