第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理異步 forEach,將結(jié)果傳遞到數(shù)據(jù)庫,然后渲染完整的數(shù)據(jù)集

如何處理異步 forEach,將結(jié)果傳遞到數(shù)據(jù)庫,然后渲染完整的數(shù)據(jù)集

一只斗牛犬 2023-07-20 14:48:47
我想:調(diào)用 API 資源取回記錄數(shù)組 - [arr]forEach over [arr] 并執(zhí)行某些功能 - 對 API 的另一個 aysnc 調(diào)用對于每次迭代,創(chuàng)建一個對象,其中包含原始 API 調(diào)用的元素以及每個項目的后續(xù)調(diào)用將生成的每個對象實例保存到 Mongo在所有必需的保存操作結(jié)束時,從 Mongo 調(diào)用完整的集合res.render 該集合我的代碼如下所示://First API call to get [arr]  const results = await getlist();  //Iterate over [arr] and perform a request on each item   _.forEach(results, async function (result) {  //Seconday request for each item in [arr]  const record = await item(result.id).fetch();  //Combined doc from original result and secondary call for record  let doc = new DocModel({    item1: result.id,    item2: record.something,      });  //Save doc  const saveDoc = doc.save();  });//Call for all docsconst allItems = await DocModel.find(); //Render all docs res.render(`aView`, {   recordings: allItems, });我面臨的問題是渲染在 forEach 完成/填充 Mongo 之前執(zhí)行。為了嘗試解決這個問題,我嘗試將 forEach 塊包裝在 Promise 中,然后 .then res.render ,但這似乎沒有效果。確保所有函數(shù)調(diào)用在渲染發(fā)生之前完成的解決方案是什么?
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經(jīng)驗 獲得超2個贊

我在下面的代碼中放置了兩個標(biāo)記。我刪除了這個_.forEach功能


mark1:使用普通的for循環(huán)來完成

mark2:這里使用await


//First API call to get [arr]

const results = await getlist();


// ########## mark1 ########## : Use normal for-loop to do it

for (const result of results) {

    //Seconday request for each item in [arr]

    const record = await item(result.id).fetch();


    //Combined doc from original result and secondary call for record

    let doc = new DocModel({

        item1: result.id,

        item2: record.something,


    });

    // ########## mark2 ########## : use await here 

    //Save doc

    const saveDoc = await doc.save();

}


//Call for all docs

const allItems = await DocModel.find();


//Render all docs

res.render(`aView`, {

    recordings: allItems,

});


查看完整回答
反對 回復(fù) 2023-07-20
?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

你不能async await在里面使用forEach。相反,您需要使用for...of循環(huán)。

另一個最佳解決方案是使用Promise.all


查看完整回答
反對 回復(fù) 2023-07-20
?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

Promise.all

await?Promise.all(_.map(results,async?result?=>?{
???...?existing?code
});


查看完整回答
反對 回復(fù) 2023-07-20
  • 3 回答
  • 0 關(guān)注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號