我的代码在数组上运行.forEach()循环。每次迭代都运行一个mongoose查询。
我的查询返回一个空对象,这不应该发生,我想知道原因!
我不能要求回调打印使用的值,因为forEach循环在promise解析时已经完成,因此它只打印数组的最后一项(这是预期的结果)。
如何访问在mongoose回调中运行的查询?
array.forEach((item,i)=>{
model.findOneAndUpdate({a:item.a},item).exec((err,result)=>{
if(err){throw(err.stack);return;}
if(!result)
throw new Error("Nothing returned for query: "+QUERY_STRING)
})
})
答案 0 :(得分:0)
从此改变:
array.forEach((item,i)=>{
model.findOneAndUpdate({a:item.a},item).exec((err,result)=>{
if(err){throw(err.stack);return;}
if(!result)
throw new Error("Nothing returned for query: "+QUERY_STRING)
})
})
对此:
array.forEach((item,i)=>{
(function (item, i) {
model.findOneAndUpdate({a:item.a},item).exec((err,result)=>{
if(err){throw(err.stack);return;}
console.log(item, i);
if(!result)
throw new Error("Nothing returned for query: "+QUERY_STRING)
})
})(item, i)
})