我正在我的应用程序中使用meteor-paginated-subscription软件包.在服务器上,我的出版物如下所示:
Meteor.publish("posts", function(limit) {
return Posts.find({}, {
limit: limit
});
});
Run Code Online (Sandbox Code Playgroud)
在客户端:
this.subscriptionHandle = Meteor.subscribeWithPagination("posts", 10);
Template.post_list.events = {
'click #load_more': function(event, template) {
template.subscriptionHandle.loadNextPage();
}
};
Run Code Online (Sandbox Code Playgroud)
这很好用,但如果所有数据都加载到客户端上,我想隐藏#load_more按钮,使用这样的帮助:
Template.post_list.allPostsLoaded = function () {
allPostsLoaded = Posts.find().count() <= this.subscriptionHandle.loaded();
Session.set('allPostsLoaded', allPostsLoaded);
return allPostsLoaded;
};
Run Code Online (Sandbox Code Playgroud)
问题是Posts.find().count()返回客户端上加载的文档数,而不是服务器上可用的数量.
我查看了Telescope项目,该项目也使用了meteor-paginated-subscription软件包,我看到代码可以完成我想做的事情:
allPostsLoaded: function(){
allPostsLoaded = this.fetch().length < this.loaded();
Session.set('allPostsLoaded', allPostsLoaded);
return allPostsLoaded;
}
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否真的有效.将代码移植到我的代码中不起作用.
最后,它确实看起来像Mongo支持我想做的事情.该文件说,在默认情况下,cursor.count()忽略限制的影响.
好像所有的碎片都在那里,但我把它们放在一起很麻烦.
meteor ×1