0

要查询流星客户端 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()方法时实际发生了什么。我找不到任何有关此的文档。

4

2 回答 2

4

集合.find();

它在集合中找到与选择器匹配的文档并返回光标。在 Meteor 中,find()是同步的,如果数据库发生变化,它也会反映在 UI 上。

这里有更多关于Collection.find()

cursor.fetch();

fetch()是从游标中获取数据库中的所有记录。您可以对find(). 当您使用 fetch() 时,您将获取数组中的所有记录,但不会获取更新,即运行时数据库更改不会反映在执行后返回的数据上。

这里有更多关于cursor.fetch()

用什么?

如果您需要所有文档并想对其进行一些操作,那么只有fetch()在其他方面才有用,最好使用光标。

结论

使用 Collection.find() 是最好的、可靠的和轻量级的。但最后它是根据您的应用程序逻辑。

于 2015-07-13T11:20:44.963 回答
1

find和之间还有一个更根本的区别fetch要记住:fetch导致整个游标数据的深层复制操作。那吃CPU和内存。

因此:fetch如果不需要,请勿使用!d3只有在将数据传递给不了解什么是游标并且需要本机 JS 数组的第三方库时才需要它。

于 2015-07-13T14:21:58.200 回答