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

时间:2016-02-11 13:59:42

标签: javascript node.js mongodb mongoose

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