导出forEach函数的结果

时间:2017-03-07 11:07:57

标签: meteor

我在集合上有forEach个功能

const docs = Docs.find({"owner": userId}, {fields: {"recipients": 1}});

docs.forEach(({ recipients }) => {
        var docsRecipients = recipients;
        //log #1
        console.log(docsRecipients);
    });

var  docsRecipientsFinal = docsRecipients;
//log #2
console.log(docsRecipientsFinal);

#1 console.log会返回正确的结果,而不是#2(当然,这只是为了理解)。

如何导出forEach函数的结果,以便在循环外使用它?感谢。

3 个答案:

答案 0 :(得分:3)

假设你想要一个数组

const docs = Docs.find({"owner": userId}, {fields: {"recipients": 1}});
var docsRecipients = [];  //define it outside the forEach scope

docs.forEach(({ recipients }) => {

       docsRecipients.push(recipients);
       console.log(docsRecipients);


    });

var  docsRecipientsFinal = docsRecipients;  
//log #2
console.log(docsRecipientsFinal);

更新:

只需使用

var docRecipients = Docs.find({"owner": userId}, {fields: {"recipients": 1}}).fetch();

答案 1 :(得分:3)

在Meteor中,甚至不需要迭代集合,只需使用光标的.fetch()方法即可。它返回一组文档。

const docs = Docs.find({
  "owner": userId
}, {
  fields: {
    "recipients": 1
  }
}).fetch();

答案 2 :(得分:0)

docsRecipients的范围在foreach块内,要访问docsRecipients值,请将其声明为foreach以上的全局变量,这也将存储最后一个索引价值foreach

sample foreach

 var docsRecipients="";
    docs.forEach(({ recipients }) => {
             docsRecipients = recipients;
            //log #1
            console.log(docsRecipients);
        });

    var  docsRecipientsFinal = docsRecipients;
    //log #2
    console.log(docsRecipientsFinal);