使用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
)之后,需要在这里调用。在更新所有文档之前,这里都在执行。
答案 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