我正在forEach
函数中执行Meteor方法,并将每个方法的结果(一个新的id
)推送到一个数组中,然后用于其他目的。我可以看到每个新id
已创建(每个方法的result
)。但是,控制台返回的是一个索引号数组,而不是一个新的id
数组。
编辑编辑以解决以下问题 在事件处理程序中,选择了两个文档:
var selectionsFinal = [];
selections.forEach(function(v, selectionsFinal) {
Meteor.call('copy', v, function(error, result) {
if(error) {
console.log(error);
} else {
console.log("Result: ", result); //properly returns new id
selectionsFinal.push(result);
console.log("SelectionsFinal: ", selectionsFinal); // properly returns array of 2 new ids
}
});
console.log("SelectionsFinal: ", selectionsFinal); //should return array of new ids, returns []
});
console.log("Selections Final: ", selectionsFinal); //should return array of new ids, returns []
方法
copy: function(v) {
check(v, String);
var valuation = Valuations.findOne({_id:v},{fields:{_id:0});
return Valuations.insert(valuation)
}
答案 0 :(得分:0)
您的模式将非常缓慢,正如您已经发现的那样,难以调试。由于服务器往返次数众多,不推荐使用Meteor.call()
循环。
而不是:
var selectionsFinal = [];
selections.forEach(function(v, selectionsFinal) {
Meteor.call('copy', v, function(error, result) {})
});
执行:
Meteor.call('bulkCopy',selections,function(error,result){});
数组是否在方法本身中推送,然后返回整个数组。