在Meteor中加载包含多个订阅的小块数据

时间:2016-07-22 00:29:42

标签: javascript mongodb meteor

我有一个关于集合的问题 - 具体来说,我希望在服务器上有一个大集合,并且一次只加载一小部分,以不可预测的顺序,我可能会停止想要一个本地任何时候任何给定作品的副本。我是否应该为每个数据进行新的订阅,然后在我不再需要这些数据时停止它?或者我应该使用其他方法吗?或者我应该加载我不会使用的大块数据并让它们坐在我的本地副本中?

编辑:或者我应该为我想要的每一条数据订阅一个ID列表,并让发布功能专门找到每一个?看起来很复杂,但它确实让我只需要处理一个订阅。

编辑:或者我可能只是跳过使用发布和订阅,只是使用方法将我的数据传递给客户端?失去了很多功能,需要一些额外的工作,但它确实避免了大部分问题,应该可以正常工作。

1 个答案:

答案 0 :(得分:0)

假设Mongo集合="项目"           {             名:' ITEM1&#39 ;,             类型:'基本&#39 ;,             数量:40            }

使用

在Meteor服务器上定义集合
Items= new Mongo.Collection('items')

1.这些集合包含MongoDB集合中的所有数据,您可以对它们运行Items.find({...}),这将返回光标(一组记录) ,使用迭代它们并返回它们的方法。)

Meteor.publish('itemOver30', function itemPublication() {
 return(Items.find({qty:{gte:10},{name:1,qty:1}));
 });

这会将光标返回到项目集合中项目数量超过30的所有记录(总记录的子集,而不是整个集合)。

2.Cursor用于发布(发送)一组记录(称为"记录集")。您可以选择仅发布这些记录中的某些字段。它是客户订阅的记录集(不是集合)。

Meteor.subscribe('itemOver30');
  1. 在客户端上,您有Minimongo集合,它们部分镜像服务器中的某些记录。 "部分"因为它们可能只包含一些字段,而且还包含一些记录"因为您通常只想向客户端发送所需的记录,以加快页面加载速度,并且只需要那些需要并且有权访问的记录。