sql >> Database teknologi >  >> NoSQL >> MongoDB

Abonner på Meteor.Users Collection

Hvis du vil have denne opsætning til at fungere, skal du gøre følgende:

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

});

Nej på klientsiden skal du definere en samling kun på klientsiden:

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

og abonner på det tilsvarende datasæt:

Meteor.subscribe('thisNameDoesNotMatter');

Dette burde virke nu. Fortæl mig, hvis du mener, at denne forklaring ikke er klar nok.

REDIGER

Her er self.added/changed/removed metoder fungerer mere eller mindre som en begivenhedsformidler. Kort sagt giver de instruktioner til hver klient, der ringede

Meteor.subscribe('thisNameDoesNotMatter');

om de opdateringer, der skal anvendes på klientens samling med navnet thisNameMatters forudsat at denne samling eksisterer. Navnet - der sendes som den første parameter - kan vælges næsten vilkårligt, men hvis der ikke er nogen tilsvarende samling på klientsiden, vil alle opdateringer blive ignoreret. Bemærk, at denne samling kun kan være på klientsiden, så den behøver ikke nødvendigvis at svare til en "rigtig" samling i din database.

Returnerer en markør fra din publish metode er det kun en genvej til ovenstående kode, med den eneste forskel, at navnet på en faktisk samling bruges i stedet for vores theNameMatters . Denne mekanisme giver dig faktisk mulighed for at oprette så mange "spejle" af dine datasæt, som du ønsker. I nogle situationer kan dette være ret nyttigt. Det eneste problem er, at disse "samlinger" vil være skrivebeskyttede (hvilket giver fuldstændig mening BTW), fordi hvis de ikke er defineret på serveren, eksisterer de tilsvarende `indsæt/opdater/fjern'-metoder ikke.



  1. fjern _id fra mongo resultat

  2. E-mail-indeksering ved hjælp af Cloudera Search og HBase

  3. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

  4. Sådan indstilles docker mongo datavolumen