2016-07-22 47 views
0

我有一个集合的问题 - 特别是,我想有一个服务器上的一个大集合,并在同一时间,加载它只有小块一块不可预知的顺序,我可能会停止在任何时候想要任何给定作品的本地副本。我应该为每一条数据做一个新的订阅,然后在我不再需要这些数据时停止它?或者我应该使用其他方法?或者我应该只加载一大堆我不会使用的东西,并让他们坐在我的本地副本中?加载小块的数据与许多订阅流星

编辑:或者我应该有一个订阅的ID对每个数据我想要的清单,并已出版专函数每个找到那些?看起来很复杂,但它确实让我只需要处理一个订阅。

编辑:或者,也许我应该跳过使用发布和订阅,只是使用方法来我的数据传递到客户端?失去了很多功能,并且需要一些额外的工作,但它避免了大部分问题,并且应该适合我的目的。

回答

0

假设蒙戈集合= “项目” { 名称: '物品1', 类型: '基本', 数量:40 }

您定义的流星服务器上收集与

Items= new Mongo.Collection('items') 

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

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

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

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

Meteor.subscribe('itemOver30'); 
  • 在客户端,则必须Minimongo集合部分地反映了一些来自服务器的记录。 “部分”,因为它们可能只包含一些字段和“某些记录”,因为您通常只想向客户端发送其所需的记录,以加快页面加载速度,并且只有那些需要并且有权限访问。
  • +0

    我知道预订和发布的工作怎么样,我的问题是关于我应该如何使用它们。我想单独加载项目,然后单独放置它们。我是否应该使用单个订阅和相关ID的列表,或为每个订阅创建新的订阅,或者完全跳过订阅并使用方法,或者执行其他操作...? – Angle

    +0

    请给出一些样本示例或代码,并告诉我们您想要实现什么 – AGdev

    +0

    对不起,花了这么久回到你身边,我没有注意到你的评论。作为回答,我正在创建一个论坛,每个帖子可以响应任何其他帖子,并有任何其他帖子回复它,用户可以按照他们的任意顺序动态加载和关闭帖子。 – Angle