从MongoDB向Meteor加载大量集合会使页面速度变慢

从MongoDB向Meteor加载大量集合会使页面速度变慢,mongodb,meteor,meteor-blaze,Mongodb,Meteor,Meteor Blaze,我第一次在Meteor中开发一个应用程序。如文档中所示,我以这种方式加载我的收藏: Items = new Mongo.Collection("items") items集合有超过一百万个文档,页面加载速度非常慢。如何避免这种开销?首先从控制台中删除autopublish包: $ meteor remove autopublish 否则,所有记录都将发布到所有客户端,1M记录将非常缓慢 其次,创建一个发布,该发布过滤集合,以仅发布在当前应用程序上下文中与当前用户实际相关的文档: 服务器: M

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

Items = new Mongo.Collection("items")

items
集合有超过一百万个文档,页面加载速度非常慢。如何避免这种开销?

首先从控制台中删除
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');

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

首先从控制台中删除
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');

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

如果您的集合中有数百万个文档,则在前端加载整个数据是非常糟糕的,可能在任何情况下都是如此

您应该明智地使用分页,因为meteor中有用于分页的包。但是,如果您想使用分页和简单的会话变量处理(变量保留在客户端和服务器上都可以访问的“skip”值)以及aslagle:reactive table,以便更好地显示,您可以观看此视频


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

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

您应该明智地使用分页,因为meteor中有用于分页的包。但是,如果您想使用分页和简单的会话变量处理(变量保留在客户端和服务器上都可以访问的“skip”值)以及aslagle:reactive table,以便更好地显示,您可以观看此视频

在实现了这个特性之后,您自己会觉得在UI上加载整个数据是不可行的解决方案,并且分页可以在没有页面刷新的情况下以异步和反应的方式工作