我正在尝试为我的应用设置分页。除了获取页数外,大多数事情都可以正常工作。分页的要点是在客户端请求之前不要将完整集合发送给客户端,因此我限制订阅服务器端。因此,收集.count()
总是受限于客户端上的页面大小。
我尝试过这样的事情,但它不起作用:
Meteor.publish 'count', -> Items.find().count()
我正在尝试为我的应用设置分页。除了获取页数外,大多数事情都可以正常工作。分页的要点是在客户端请求之前不要将完整集合发送给客户端,因此我限制订阅服务器端。因此,收集.count()
总是受限于客户端上的页面大小。
我尝试过这样的事情,但它不起作用:
Meteor.publish 'count', -> Items.find().count()
基本上,您需要一个由自定义发布功能提供的仅限客户端的集合。请参阅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();
});
}