簡體   English   中英

Express API 只返回對象的第一個鍵值對

[英]Express API only returns first key value pair of object

我正在獲取嵌套對象數據。 我可以在控制台上獲取該對象數據,但是當我嘗試獲取像return res.json(imageObject)這樣的數據時,我只能得到該對象的第一個鍵值對。 這是控制台的錯誤。 UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 控制台數據是這樣的{ bigImage: 'https://url.com' }

 router.get("/", async(req, res) => { //...fetch data if (mediaData.type === "type1") { let allData = await mediaData.media; allData.map(async(Data) => { if (Data.imageType === "big") { let bigImage = await Data.url; let imageObject = { bigImage }; console.log(imageObject); return res.json(imageObject); } }); } });

您在.map中使用res ,它將為您正在迭代的數組中的每個項目觸發一次。

你不能那樣做。 您只能對每個req使用res一次,因為您正在回復瀏覽器。 如果你多次使用它,你會得到這個錯誤,這意味着它已經被使用過並且你已經回復了。

解決方案:使用res一次,而不是在map

此外, .map在這里沒用,因為您對它產生的結果不感興趣。 您應該使用forEach甚至更好的for循環(在條件下可破壞)。

你應該使用for..of

它將在 return 語句處停止執行您的函數

router.get("/", async(req, res) => {
  //...fetch data
  if (mediaData.type === "type1") {
    let allData = await mediaData.media;

    let pendingResult = allData.filter(data => data.imageType === "big").map(async item => {
       let bigImage = await item.url;
       return { bigImage }
    });
    
    let result = await Promise.all(pendingResult);

    res.json(result);
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM