将MongoDB中的大型集合加载到Meteor会使页面变慢

时间:2016-05-05 23:26:44

标签: mongodb meteor meteor-blaze

我是第一次在Meteor开发应用程序。如文档中所示,我以这种方式加载我的集合:

Items = new Mongo.Collection("items")

items集合包含超过一百万个文档,并且使页面加载速度非常慢。我怎样才能避免这种开销?

2 个答案:

答案 0 :(得分:2)

首先从控制台中删除autopublish包:

$ meteor remove autopublish

否则所有记录都将发布到所有客户端,1M记录将非常慢。

其次,创建一个过滤集合的出版物,以便仅发布当前应用程序上下文中与当前用户实际相关的那些文档:

服务器:

Meteor.publish('myItems',function(){
  if ( this.userId ){
    return Items.find({ some query relevant to the user },
      {fields: { key1: 1, key2: 1, ... only relevant fields }});
  }
  this.ready();
});

客户端:

Meteor.subscribe('myItems');

您的查询和相关字段列表可能因用户类别而异。对于不同的用例,您还可以在同一集合上拥有多个出版物

答案 1 :(得分:0)

如果您的收藏集有数百万个文档,那么在前端加载整个数据非常糟糕,可能是任何情况。

你应该明智地使用 PAGINATION ,因为在流星中存在用于分页的包。但是如果你想使用简单的Session变量处理分页(变量保持" 跳过"可以在客户端和服务器上访问的值) aslagle:reactive -table 为了更好地展示,您可以观看此视频https://www.youtube.com/watch?v=UivnTM1YA-I

实现此功能后,您自己会觉得在UI上加载整个数据是不可行的解决方案和分页工作,无需页面刷新,异步和反应。