小编jru*_*ann的帖子

如何在客户端获取已发布集合的总计数,无论指定的限制如何?

我正在我的应用程序中使用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

12
推荐指数
3
解决办法
2万
查看次数

标签 统计

meteor ×1