使用Node.js和MongoDB完成回调执行后如何执行新功能?

时间:2019-01-22 10:03:57

标签: node.js mongodb

使用Node.js和MongoDB完成回调执行后,我需要调用一些函数。我在下面提供我的代码。

var updateArr=[];
TempCollection.find({},function(err,docs){
    for(var i=0;i<docs.length;i++){
        if (docs[i]['login_id']=='' || docs[i]['login_id']==null) {
            var zon=docs[i]['zone']+'@oditeksolutions.com';                     
            TempCollection.findOneAndUpdate({$or:[{login_id:null},{login_id:''}]},{$set:{login_id:zon}},{new:true},function(err1,upd){
                    if(!err1){
                        updateArr.push(upd);

                    }
           })

       }
    }
    console.log('lrn::',updateArr.length);
    if (updateArr.length > 0) {
        createAllocation();
        createUser();
    }
})

在所有文档更新了两个功能(i.e-createAllocation and createUser)之后,需要在这里调用。在更新所有文档之前,这里都在执行。

1 个答案:

答案 0 :(得分:1)

IntStream.range(0, searchCriteria.getConditions().size()) .mapToObj(index-> getSpec(searchCriteria.getConditions().get(index))) .reduce(Specification::and) .orElseThrow(SomeException::new) // or any default from Specification... 是异步运行的,所以当循环结束时,这些功能还没有完成工作。

我建议您使用 searchCriteria.getConditions() .stream() .map(this::getSpec) .reduce(Specification::and) .orElseThrow(SomeException::new) ,以便您可以轻松地同步运行两个步骤(首先更新数据库,然后最后调用函数):

findOneAndUpdate