首页 文章

如何在mongoose回调中读取查询?

提问于
浏览
0

我的代码在数组上运行.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)
    })
})

1 回答

  • 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)
    })
    

相关问题