亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - promise mongoose 循環(huán)遍歷查詢(xún)

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

問(wèn)題描述

let result = []; //存放查詢(xún)結(jié)果model.WithdrawModel.find({status:’processing’}, (err, doc) => { if (err) {console.log(err);res.json({ code: -1, msg: ’查詢(xún)失敗’});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: ’查詢(xún)成功’, result: result});return; } });

循環(huán)遍歷查詢(xún),上述 result 直接返回空值,請(qǐng)問(wèn)怎么保證 doc.map 內(nèi)部的查詢(xún)都結(jié)束之后再取出 result 的值?

問(wèn)題解答

回答1:

自問(wèn)自答吧,也是受人指點(diǎn)。

promise.all 實(shí)現(xiàn)如下:

let result = []; //存放查詢(xún)結(jié)果let doc1 = []; //存放第一次查詢(xún)的結(jié)果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返回的結(jié)果是一一對(duì)應(yīng)的 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: ’查詢(xún)成功’, result: result});return; });}).catch((e) => { console.log(e); res.json({ code: -1, msg: ’查詢(xún)失敗’}); return;});

--------------------------------------補(bǔ)充-------------------------------------------------

計(jì)數(shù)的思想仍然是可以實(shí)現(xiàn)的,使用 event 模塊即可:javascript - promise  mongoose 循環(huán)遍歷查詢(xún)

回答2:

由于Promise是異步調(diào)用,所以在所有的查詢(xún)之后使用return,會(huì)在還沒(méi)真正獲取到數(shù)據(jù)之后就返回,所以需要Promise內(nèi)添加一個(gè)計(jì)數(shù)器count,在所有的Promise下,加一個(gè)循環(huán),當(dāng)所有的doc都循環(huán)到了(count == doc.length),才可以輸出返回。

const deasync = require(’deasync’); // 引入deasync包...let result = []; //存放查詢(xún)結(jié)果model.WithdrawModel.find({status: ’processing’}, (err, doc) => { if(err) {console.log(err);res.json({code: -1, msg: ’查詢(xún)失敗’});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: ’查詢(xún)成功’, result: result});return; }});

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 视频一区色眯眯视频在线 | 九九99久麻豆精品视传媒 | 免费观看毛片的网站 | 欧美日韩一级片在线观看 | 日韩一区二区久久久久久 | 杨幂精品国产专区91在线 | 免费a级毛片视频 | 久久久久久久久久免费视频 | 精品乱人伦一区二区 | 日韩亚洲一区中文字幕 | 欧美日韩无 | 亚洲精品国产精品国自产观看 | 国产成人福利夜色影视 | 精品视频国产狼人视频 | 嫩草影院ncyy在线观看 | 国内精品久久精品 | 久草在线视频免费资源观看 | 亚洲一级毛片免费在线观看 | 免费又黄又爽视频 | 一级一级毛片看看 | 欧美在线综合 | 青青草国产一区二区三区 | 国产日韩精品一区二区三区 | 欧美透逼视频 | 日本加勒比在线观看 | 国产极品喷水视频jk制服 | 国产欧美在线一区二区三区 | 宅男66lu国产乱在线观看 | 九九99九九在线精品视频 | 黄色免费看片网站 | 97久久曰曰久久久 | 国产三级精品在线观看 | 欧美国产成人免费观看永久视频 | 亚洲三级视频在线观看 | 岛国在线永久免费视频 | 一级特黄特黄毛片欧美的 | 成熟的女性强烈交性视频 | 国产精品二区三区免费播放心 | 久久精品三级视频 | 国产精品久久久久久一区二区三区 | 一级待一黄aaa大片在线还看 |