我在集合上有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函数的结果,以便在循环外使用它?感谢。
答案 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
。
var docsRecipients="";
docs.forEach(({ recipients }) => {
docsRecipients = recipients;
//log #1
console.log(docsRecipients);
});
var docsRecipientsFinal = docsRecipients;
//log #2
console.log(docsRecipientsFinal);