2

我正在尝试为我的应用设置分页。除了获取页数外,大多数事情都可以正常工作。分页的要点是在客户端请求之前不要将完整集合发送给客户端,因此我限制订阅服务器端。因此,收集.count()总是受限于客户端上的页面大小。

我尝试过这样的事情,但它不起作用:

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

1 回答 1

4

基本上,您需要一个由自定义发布功能提供的仅限客户端的集合。请参阅http://docs.meteor.com/#meteor_publish关于如何执行此操作的第二个示例。使用此方法,您无需任何相应的服务器端集合即可生成数据。

沿着这些思路:

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 回答