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

Абониране за Meteor.Users Collection

Ако искате тази настройка да работи, трябва да направите следното:

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

});

Не от страна на клиента, трябва да дефинирате колекция само от страна на клиента:

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

и се абонирайте за съответния набор от данни:

Meteor.subscribe('thisNameDoesNotMatter');

Това трябва да работи сега. Кажете ми, ако смятате, че това обяснение не е достатъчно ясно.

РЕДАКТИРАНЕ

Тук self.added/changed/removed методите действат повече или по-малко като диспечер на събития. Накратко казано, те дават инструкции на всеки клиент, който се е обадил

Meteor.subscribe('thisNameDoesNotMatter');

относно актуализациите, които трябва да се прилагат към колекцията на клиента с име thisNameMatters като приемем, че тази колекция съществува. Името – предадено като първи параметър – може да бъде избрано почти произволно, но ако няма съответна колекция от страна на клиента, всички актуализации ще бъдат игнорирани. Имайте предвид, че тази колекция може да бъде само от страна на клиента, така че не е задължително да съответства на „истинска“ колекция във вашата база данни.

Връщане на курсор от вашия publish метод, това е само пряк път за горния код, с единствената разлика, че името на действителна колекция се използва вместо нашия theNameMatters . Този механизъм всъщност ви позволява да създавате толкова "огледала" на вашите набори от данни, колкото желаете. В някои ситуации това може да е доста полезно. Единственият проблем е, че тези „колекции“ ще бъдат само за четене (което, между другото, има смисъл), тъй като ако не са дефинирани на сървъра, съответните методи „insert/update/remove“ не съществуват.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB като услуга за опашка?

  2. Проблем с инсталирането на драйвер на PHP MongoDb на wamp

  3. Как да гарантирате, че вашите MongoDB клъстери могат да оцелеят при прекъсвания на Amazon AWS?

  4. $unionWith – Еквивалент на MongoDB на UNION ALL

  5. Вземете генериран скрипт в MongoDB C# драйвер