亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - promise mongoose 循環遍歷查詢

瀏覽:76日期:2023-08-27 15:02:00

問題描述

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

循環遍歷查詢,上述 result 直接返回空值,請問怎么保證 doc.map 內部的查詢都結束之后再取出 result 的值?

問題解答

回答1:

自問自答吧,也是受人指點。

promise.all 實現如下:

let result = []; //存放查詢結果let doc1 = []; //存放第一次查詢的結果model.WithdrawModel.find({status:’processing’}).exec().then((doc) => { doc1 = doc; const promises = doc.map(item => model.UserModel.findOne({phone:item.phone},’name IDcard bank bankCard bank_area bank_name’)); return Promise.all(promises);}).then((bankInfoList) => {//promise.all返回的結果是一一對應的 for(let i=0; i<doc1.length; i++){let obj = {};Object.assign(obj, JSON.parse(JSON.stringify(doc1[i])), JSON.parse(JSON.stringify(bankInfoList[i])));result.push(obj); } return new Promise((resolve, reject) => { resolve(result); }) }).then((result) => { return new Promise(() => {res.json({ code: 0, msg: ’查詢成功’, result: result});return; });}).catch((e) => { console.log(e); res.json({ code: -1, msg: ’查詢失敗’}); return;});

--------------------------------------補充-------------------------------------------------

計數的思想仍然是可以實現的,使用 event 模塊即可:javascript - promise  mongoose 循環遍歷查詢

回答2:

由于Promise是異步調用,所以在所有的查詢之后使用return,會在還沒真正獲取到數據之后就返回,所以需要Promise內添加一個計數器count,在所有的Promise下,加一個循環,當所有的doc都循環到了(count == doc.length),才可以輸出返回。

const deasync = require(’deasync’); // 引入deasync包...let result = []; //存放查詢結果model.WithdrawModel.find({status: ’processing’}, (err, doc) => { if(err) {console.log(err);res.json({code: -1, msg: ’查詢失敗’});return; } else {let count = 0, len = doc.length;doc.forEach((item, index) => { 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); }count++; });});deasync.loopWhile(() => count < len);res.json({code: 0, msg: ’查詢成功’, result: result});return; }});

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 爱操综合| 91在线视频在线观看 | 凹凸69堂国产成人精品视频 | 国产欧美日韩精品一区二区三区 | 日本一级特黄刺激爽大片 | 国产在线视频一区 | 麻豆视频传媒入口 | 亚洲精品第1页 | 日本国产免费一区不卡在线 | 在线看片日韩 | 国产一二三四区中 | 色牛网 | 一区二区3区免费视频 | 欧美国产综合视频在线观看 | 国产亚洲高清在线精品99 | 亚洲精品tv久久久久久久久久 | 久久国产精品视频 | 亚洲在线观看免费视频 | 国产成在线观看免费视频 | 一级国产精品一级国产精品片 | 91福利在线免费观看 | 宅男噜噜噜一区二区三区 | 亚洲欧美色欧另类欧 | 亚洲精品高清久久 | 国产91精选在线观看麻豆 | 日韩不卡在线 | 麻豆福利影院 | 国内精品一区二区三区 | 欧洲女人性开放免费网站 | 亚洲七七久久综合桃花 | 影音先锋男人在线资源 | 在线视频日韩 | 欧美亚洲一区二区三区 | 欧美成人h版整片合集 | 国产一精品一av一免费爽爽 | 日本不卡在线视频高清免费 | 国产伦一区二区三区高清 | 成人黄色在线播放 | 性高清| 精品国产美女福到在线不卡f | 国产性高清在线观看 |