当我在 minimongo 上执行 fetch() 时会发生什么
what happens when I execute fetch() on minimongo
要在 meteors 客户端 mongodb 实现上查询对象,我可以使用
MyModel.find();
// produces a lot of attributes, not useful
或
MyModel.find().fetch();
// returns array containing my objects from type 'MyModel', e.g.
// [ { _id: "1", title: "some title", url: "some Url"__proto__: Object }, .. ]
如果我不使用 fetch,我会得到很多我不理解的属性,这些属性对我来说似乎没有用。我想知道当我调用 fetch()
方法时到底发生了什么。我找不到与此相关的任何文档。
Collection.find();
它在集合中找到与选择器和 returns 光标匹配的文档。在 Meteor 中,find()
是同步的,如果数据库发生变化,它也会反映在 UI 上。
Here 是关于 Collection.find()
的更多详细信息
cursor.fetch();
fetch()
是从游标中获取数据库中的所有记录。您可以对 find()
返回的游标使用提取。当您使用 fetch() 时,您将获取数组中的所有记录,但不会获取更新,即运行时数据库更改不会反映在执行后返回的数据上。
Here 是关于 cursor.fetch()
的更多详细信息
What to use?
如果您需要所有文件并想对其进行一些操作,那么只有 fetch()
有用,否则,最好使用游标。
结论
使用 Collection.find() 是最好的、可靠的和轻量级的。但最终它是按照你的应用程序逻辑。
请记住 find
和 fetch
之间还有一个更根本的区别:fetch
导致对整个游标数据进行深度复制操作。那会吃 CPU 和内存。
因此:如果不需要,请不要使用 fetch
!只有在将数据传递给像 d3
这样不理解什么是游标并且需要原生 JS 数组的第三方库时才需要它。
要在 meteors 客户端 mongodb 实现上查询对象,我可以使用
MyModel.find();
// produces a lot of attributes, not useful
或
MyModel.find().fetch();
// returns array containing my objects from type 'MyModel', e.g.
// [ { _id: "1", title: "some title", url: "some Url"__proto__: Object }, .. ]
如果我不使用 fetch,我会得到很多我不理解的属性,这些属性对我来说似乎没有用。我想知道当我调用 fetch()
方法时到底发生了什么。我找不到与此相关的任何文档。
Collection.find();
它在集合中找到与选择器和 returns 光标匹配的文档。在 Meteor 中,find()
是同步的,如果数据库发生变化,它也会反映在 UI 上。
Here 是关于 Collection.find()
cursor.fetch();
fetch()
是从游标中获取数据库中的所有记录。您可以对 find()
返回的游标使用提取。当您使用 fetch() 时,您将获取数组中的所有记录,但不会获取更新,即运行时数据库更改不会反映在执行后返回的数据上。
Here 是关于 cursor.fetch()
What to use?
如果您需要所有文件并想对其进行一些操作,那么只有 fetch()
有用,否则,最好使用游标。
结论
使用 Collection.find() 是最好的、可靠的和轻量级的。但最终它是按照你的应用程序逻辑。
请记住 find
和 fetch
之间还有一个更根本的区别:fetch
导致对整个游标数据进行深度复制操作。那会吃 CPU 和内存。
因此:如果不需要,请不要使用 fetch
!只有在将数据传递给像 d3
这样不理解什么是游标并且需要原生 JS 数组的第三方库时才需要它。