要查询流星客户端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 ();
在集合中查找与选择器匹配的文档并返回光标。在Meteor中,find()
是同步的,如果数据库发生了变化,它也会反映在UI上。
以下是Collection.find()
的详细信息
cursor.fetch ();
fetch()
是从游标获取数据库at-one的所有记录。您可以对find()
返回的游标使用fetch。当你使用fetch()时,你会得到数组中的所有记录,但你不会得到更新,即运行时数据库的变化不会反映在执行后返回的数据上。
关于cursor.fetch()
的更多细节
用什么?
如果你需要所有的文档,并且想对它做一些操作,那么只有fetch()
是有用的,否则,游标是最好的。
使用Collection.find()是最好的、可靠的和轻量级的。但最后它是根据您的应用程序逻辑。
find
和fetch
之间还有一个更根本的区别:fetch
导致对整个游标数据进行深度复制操作。这会消耗CPU和内存。
因此:如果你不需要,不要使用fetch
!只有在将数据传递给第三方库(如d3
)时才需要它,这些库不理解游标是什么,需要本地JS数组。