如何将地图功能用于流星集合?
使用教程,我们有一个名为Posts的集合。
Posts.find()返回一个游标,让我遍历所有的游标 Posts.find()。fetch()会给我一个包含所有帖子的数组,但这可能是很多数据。
假设我只想在数组中使用Posts的一个元素,比如标题:我可以这样做:
titles=Posts.find().map(function(a) {return a.title}); // works
假设我想要标题和ownerIds。 我正在调试这个并做了:
a=Posts.find()
titles=a.map((function(a) {return a.title;}); // works
ownerIds=a.map((function(a) {return a.ownerId;}); //doesn't work, cursor already iterated over, returns empty array.
这不起作用。为什么呢?
答案 0 :(得分:9)
您可以通过调用rewind来多次使用光标。来自文档:
forEach,map或fetch方法只能在游标上调用一次。要多次访问光标中的数据,请使用rewind重置光标。
所以这应该有效:
a=Posts.find()
titles=a.map((function(a) {return a.title;});
a.rewind();
ownerIds=a.map((function(a) {return a.ownerId;});
答案 1 :(得分:2)
<强> ANS:强> 它不起作用的原因是游标只能迭代一次。也就是说,游标不能与数组一样使用。
(其他人可能已经知道了这一点,但在我弄明白之前,我花了半个小时进行了无效的调试。)