Home > Enterprise >  Axios Async Await Function returns 'undefined' results (Using while Loop)
Axios Async Await Function returns 'undefined' results (Using while Loop)

Time:10-05

I am trying to get data from an api using axios.

I am first getting the token, and then using the token to make the request. Since there is a limit on how much information can be responded, I have to use a while loop to get all the data and store it all to an empty array.

However, I am getting a bunch of 'undefined', I read other similar articles online with regard to this return, and most of them is because of "no return", but since I am using a while loop, where can I return the data?

const getDailySales = async (req, res) => {
    try {
      const res_token = await axios.post(
        `https://cysms.wuuxiang.com/api/auth/accesstoken?appid=${process.env.TCSL_APPID}&accessid=${process.env.TCSL_ACCESSID}&response_type=token`
      );
      const token = res_token.data.access_token;

      var list = [];
      var pageTotal = true;
      var pageNo = 1;

      while (pageTotal) {
        var salesData = await axios.post(
          `https://cysms.wuuxiang.com/api/datatransfer/getserialdata?centerId=${process.env.TCSL_CENTERID}&settleDate=2022-09-30&pageNo=${pageNo}&pageSize=20&shopId=12345`
          {},
          {
            headers: {
              access_token: `${token}`,
              accessid: `${process.env.TCSL_ACCESSID}`,
              granttype: "client",
            },
          }
        );
        list.push(salesData);
        console.log(salesData.data.data.billList.shop_name);
        if (salesData.data.data.pageInfo.pageTotal !== pageNo) {
          pageNo  = 1;
        } else {
          pageTotal = false;
        }
      }
    } catch (error) {
      console.log(error);
    }
  };

CodePudding user response:

Above implementation would work. Return list just before catch and after ending of the while loop

       } else {
       pageTotal = false;
     }
   }
   return list;
 } catch (error) {
   console.log(error);
 }
};

Few suggestions

  • Use let/const instead of var.
  • Can elaborate more error handling

CodePudding user response:

return list like this:

return res.status(200).json({list});
  • Related