Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor cursor.map():明白了,如何多次提取一个元素?_Javascript_Meteor_Cursor - Fatal编程技术网

Javascript Meteor cursor.map():明白了,如何多次提取一个元素?

Javascript Meteor cursor.map():明白了,如何多次提取一个元素?,javascript,meteor,cursor,Javascript,Meteor,Cursor,如何使用流星收集的地图功能 使用教程,我们有一个名为Posts的集合 find()返回一个游标,让我遍历所有 Posts.find().fetch()将为我提供一个包含所有帖子的数组,但这可能包含大量数据 假设我只需要一个数组中的一个post元素,如标题:我可以这样做: titles=Posts.find().map(function(a) {return a.title}); // works 假设我想要标题和所有者ID。 我正在调试此程序,并执行了以下操作: a=Posts.find()

如何使用流星收集的地图功能

使用教程,我们有一个名为Posts的集合

find()返回一个游标,让我遍历所有 Posts.find().fetch()将为我提供一个包含所有帖子的数组,但这可能包含大量数据

假设我只需要一个数组中的一个post元素,如标题:我可以这样做:

titles=Posts.find().map(function(a) {return a.title}); // works
假设我想要标题和所有者ID。 我正在调试此程序,并执行了以下操作:

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.
这是行不通的。为什么?

答案: 它不起作用的原因是游标只能迭代一次。也就是说,游标不能用于同一数组


(其他人可能已经知道了这一点,但我花了半个小时进行了徒劳的调试,直到我找到答案。)

通过调用光标,可以多次使用光标。从文档中:

forEach、map或fetch方法只能在游标上调用一次。要多次访问光标中的数据,请使用“倒带”重置光标

因此,这应该是可行的:

a=Posts.find()
titles=a.map((function(a) {return a.title;});
a.rewind();
ownerIds=a.map((function(a) {return a.ownerId;});

您也可以像这样返回一个对象'titles=a.map((函数(a){return{title:a.title,ownerId:a.ownerId}});谢谢@david,GBU