2

アプリのページネーションを設定しようとしています。ページ数を取得することを除いて、ほとんどのことが機能しました。ページネーションの主なポイントは、クライアントが要求するまで完全なコレクションをクライアントに送信しないことです。そのため、サーバー側のサブスクリプションを制限します。したがって、コレクション.count()は常にクライアントのページ サイズに制限されます。

私はそのようなことを試しましたが、うまくいきません:

Meteor.publish 'count', -> Items.find().count()
4

1 に答える 1

4

基本的に、カスタム発行機能によって供給されるクライアントのみのコレクションが必要です。その方法については、 http://docs.meteor.com/#meteor_publish 2 番目の例を参照してください。このメソッドを使用すると、対応するサーバー側のコレクションなしでデータを生成できます。

それらの線に沿った何か:

Meteor.publish("counts", function() {
  var self = this,
      count = 0,
      uuid = Meteor.uuid();

  var handle = TargetCollection.find({}).observe(function() {
    added: function() {
      // Document added, increase count and push it down the pipe.
      count++;
      self.set("counts", uuid, {count: count});
      self.flush();
    },
    removed: function() {
      // Document removed, decrease count and push it down the pipe.
      count--;
      self.set("counts", uuid, {count: count});
      self.flush();
    }
  }
  // Observe only returns after the initial added callbacks have
  // run.  Now mark the subscription as ready.
  self.complete();
  self.flush();

  // stop observing the cursor when client unsubs
  self.onStop(function () {
    handle.stop();
  });
}
于 2013-01-14T13:28:06.270 に答える