我是第一次在Meteor开发应用程序。如文档中所示,我以这种方式加载我的集合:
Items = new Mongo.Collection("items")
items
集合包含超过一百万个文档,并且使页面加载速度非常慢。我怎样才能避免这种开销?
答案 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上加载整个数据是不可行的解决方案和分页工作,无需页面刷新,异步和反应。