【问题标题】:Meteor mongo what is fetch()?Meteor mongo 什么是 fetch()?
【发布时间】:2017-11-25 23:17:50
【问题描述】:
我最近开始学习 Meteor,所以我通过 Meteor 学习了如何使用 Mongo,但是有一些我不明白的地方,在网络上我经常看到这样的例子:SomeCollection.find().fetch(),我看不到fetch() 有什么用处?
在docs,他们说:
当从响应式计算中调用时,获取匹配文档上的寄存器依赖项
这是否意味着当SomeCollection 中的数据发生变化时,它们会在视图中发生变化?
find()返回的游标是不是默认是反应式的(游标上数据的变化会自动在视图中可见)?
谁能帮我解决这个歧义?
【问题讨论】:
标签:
meteor
reactive-programming
meteor-blaze
【解决方案1】:
someCollection.find() 的光标足以作为 Blaze 模板帮助程序的返回值。 Blaze 知道如何迭代游标和数组。是的,当光标改变时,模板视图会自动更新。
但在某些情况下,您希望使用仅理解数组的其他算法/库来处理集合查询的结果,在这种情况下,您只需 fetch() 光标在处理它之前。如果您需要在光标更改时重新运行此过程,只需使用 this.autorun / Tracker.autorun 将其包装起来,使其成为文档中所说的“反应式计算”。
【解决方案2】:
我看到文档说:
将所有匹配的文档作为数组返回。
Collection.find() 返回一个包含与该集合匹配的文档的cursor,Collection.find().fetch() 返回一个数组(包含这些文档)到该cursor。