在Meteor中加载具有许多订阅的小块数据

Loading small pieces of data with many subscriptions in Meteor

本文关键字:数据 许多订 Meteor 加载      更新时间:2023-09-26

我有一个关于Collections的问题,特别是,我希望在服务器上有一个大的集合,并以不可预测的顺序一次只加载其中的一小部分,这样我可能就不想在任何时候拥有任何给定片段的本地副本了。我是否应该为每条数据进行新的订阅,然后在不再需要该数据时停止订阅?或者我应该使用其他方法吗?或者我应该把我不会使用的大块放在本地的收藏中?

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

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

假设Mongo collection="items"{名称:'tem1',类型:"基本",数量:40}

使用在Meteor服务器上定义集合

Items= new Mongo.Collection('items')

1.这些集合包含MongoDB集合中的所有数据,您可以在它们上运行Items.fund({…}),它将返回一个游标(一组记录,带有迭代并返回它们的方法)。

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

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

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

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