sql >> データベース >  >> NoSQL >> MongoDB

Meteor.Usersコレクションの購読

    この設定を機能させるには、次のことを行う必要があります。

    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の代わりに実際のコレクションの名前が使用される点が異なります。 。このメカニズムにより、実際には、データセットの「ミラー」を必要な数だけ作成できます。状況によっては、これが非常に役立つ場合があります。唯一の問題は、これらの「コレクション」が読み取り専用になることです(これは完全に理にかなっています)。サーバーで定義されていない場合、対応する「挿入/更新/削除」メソッドが存在しないためです。



    1. redisハッシュでキーパターンを検索する方法は?

    2. 信頼性のあるRedisPub/ Sub

    3. AWSでMongoDBをホストするときに尋ねる(そして答える)10の質問

    4. Redis:ハッシュをキーで並べ替えるにはどうすればよいですか?