我正在尝试为我的应用设置分页。除了获取页数之外,大部分工作都有效。分页的主要目的不是在他请求之前将完整的集合发送给客户端,因此我限制了订阅服务器端。因此,集合.count()
始终限于客户端上的页面大小。
我尝试过类似的东西,但它不起作用:
Meteor.publish 'count', -> Items.find().count()
答案 0 :(得分: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();
});
}