我最近开始学习Meteor,所以我学会了如何通过Meteor与Mongo合作但有一些我不理解的东西,在网络上我经常看到如下例子: SomeCollection.find().fetch()
,我看不出fetch()
有什么用?
在docs中,他们说:
从反应计算中调用时,fetch会在匹配文档上注册依赖项
这是否意味着当SomeCollection
中的数据发生变化时,它们会在视图中更改?
默认情况下,find()
返回的游标是不是被动(光标上的数据更改会在视图中自动显示)?
任何人都可以为我清除这种含糊之处吗?
答案 0 :(得分:1)
来自someCollection.find()
的光标足以作为 Blaze模板助手的返回值。 Blaze知道如何迭代游标和数组。是的,当光标改变时,模板视图将相应地自动更新。
但在某些情况下,您希望使用其他只能理解数组的算法/库来处理集合查询的结果,在这种情况下,您只需在处理之前fetch()
光标。如果您需要在光标更改时重新运行此过程,只需使用this.autorun
/ Tracker.autorun
对其进行包装,以使其成为文档所讨论的“反应计算”。
答案 1 :(得分:0)
我看到文档说:
将所有匹配的文档作为数组返回。
Collection.find()
将包含匹配文档的cursor
返回给该集合,Collection.find().fetch()
将一个数组(包含这些文档)返回给cursor
。