let result = []; //存放查询结果
model.WithdrawModel.find({status:'processing'}, (err, doc) => {
if (err) {
console.log(err);
res.json({ code: -1, msg: '查询失败'});
return;
} else {
doc.map((item) => {
model.UserModel.findOne({phone:item.phone},'name IDcard bank bankCard bank_area bank_name', (err, bankInfo) => {
if (err) {
console.log(err);
} else {
let obj = {};
Object.assign(obj, JSON.parse(JSON.stringify(item)), JSON.parse(JSON.stringify(bankInfo)));
result.push(obj);
console.log(result);
}
})
});
res.json({ code: 0, msg: '查询成功', result: result});
return;
}
});
En parcourant la requête, le résultat ci-dessus renvoie directement une valeur nulle. Comment puis-je m'assurer que toutes les requêtes internes dans doc.map sont terminées avant de retirer la valeur du résultat ?
Posez et répondez à vos propres questions et recevez les conseils des autres.
promise.all est implémenté comme suit :
------------------------------------------------- Supplément ---------- ---------------------------------------
L'idée de compter est toujours réalisable, il suffit d'utiliser le module événementiel :
Puisque Promise est un appel asynchrone, utilisez
return
,会在还没真正获取到数据之后就返回,所以需要Promise内添加一个计数器count,在所有的Promise下,加一个循环,当所有的doc都循环到了(count == doc.length
) après toutes les requêtes pour afficher le retour.