Meteor mongo什么是fetch()?

时间:2017-06-22 15:17:25

标签: meteor reactive-programming meteor-blaze

我最近开始学习Meteor,所以我学会了如何通过Meteor与Mongo合作但有一些我不理解的东西,在网络上我经常看到如下例子: SomeCollection.find().fetch() ,我看不出fetch()有什么用?

docs中,他们说:

  

从反应计算中调用时,fetch会在匹配文档上注册依赖项

这是否意味着当SomeCollection中的数据发生变化时,它们会在视图中更改?

默认情况下,find()返回的游标是不是被动(光标上的数据更改会在视图中自动显示)?

任何人都可以为我清除这种含糊之处吗?

2 个答案:

答案 0 :(得分:1)

来自someCollection.find()的光标足以作为 Blaze模板助手的返回值。 Blaze知道如何迭代游标和数组。是的,当光标改变时,模板视图将相应地自动更新。

但在某些情况下,您希望使用其他只能理解数组的算法/库来处理集合查询的结果,在这种情况下,您只需在处理之前fetch()光标。如果您需要在光标更改时重新运行此过程,只需使用this.autorun / Tracker.autorun对其进行包装,以使其成为文档所讨论的“反应计算”。

答案 1 :(得分:0)

我看到文档说:

  

将所有匹配的文档作为数组返回。

Collection.find()将包含匹配文档的cursor返回给该集合,Collection.find().fetch()将一个数组(包含这些文档)返回给cursor