发布/订阅大数据集合

时间:2013-11-22 08:00:53

标签: meteor

我有一个非常大的集合(大约有200个字段~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

因此,当用户订阅整个集合(不包括服务器发布中的某些字段)并使用带有自定义过滤器,排序和顺序的Collection.find时,客户端真的很难工作

我尝试使用带选项的发布:即客户定义的过滤器&但是在这种情况下,我在服务器上出现了太多的内存泄漏,几个小时后就出现了史诗失败:)。

有人可以为这种集合建议一些发布 - 订阅架构吗?我不是要求明确的解决方案,而是要求一些有用的想法

由于

2 个答案:

答案 0 :(得分:2)

您可能想尝试https://github.com/alethes/meteor-pages

它有:

增量订阅。仅下载所需内容,而不是一次下载整个集合。适用于大型数据集。

答案 1 :(得分:0)

不要发布所有文件。发布您想要显示的文档并使用分页。我想在Meteor上写一篇关于分页的教程,但我现在没有太多时间。

使用Iron Router及其waitOn功能进行客户端订阅。

Router.map(function () {
   this.route('postShow', {
      path: '/posts/:page',

      before: function() {
         Session.set('page', this.params.page);
      },

      waitOn: function () {
         //how many documents we want to per page
         var perPage = 50;
         return Meteor.subscribe('posts', {}, {
           //limit
           limit: perPage,
           //we need to compute how many documents to skip
           skip:  perPage * Session.get('page') - perPage
         });
      },

      data: function() {
         return {
            //variable posts available for Handlebars: {{#each posts}}...
            posts: Posts.find()
         }
      } 
   });
});

并发布:

Meteor.publish('posts', function(params, opts) {
   return Posts.find(params, opts);
});