我如何在axios函数中访问数据数组

问题描述 投票:0回答:1

我正在尝试访问包含来自请求的信息的数据数组,但似乎无法弄清楚。

当我尝试在视图中显示它时,我得到了一个不确定的无法读取的length属性;

const getData = () => {
    axios.get("https://www.worldometers.info/coronavirus/")
        .then(res => {
            const data = [];
            const $ = cheerio.load(res.data);
            $('.maincounter-number').each((index, element) => {
                const numberData = $(element).text();
                data[0] = {numberData: numberData};
            });
        }).catch(err => {
        console.log("Error fetching and parsing data: ", err);
    });

}


app.get("/", (req, res) => {
    const data = getData();;
    res.render('index', {title: 'Home', data: data});

});

哈巴狗视图

p #{data.dataNumbers}

我也尝试过此功能,但遇到相同的问题

async function scrapeWorldOMeter(){
   try{
       const worldOMeterResponse = await axios.get("https://www.worldometers.info/coronavirus/");
       const data = [];
       const $ = cheerio.load(worldOMeterResponse.data);
       $('.maincounter-number').each((index, element) => {
       const numberData = $(element).text();
       data[0] = {numberData: numberData};
       return data[0];
   });

   }
   catch(err){
       throw new Error(`Can't scrape WorldOMeter ${err}`)
   }
}


app.get("/", async(req, res) => {
const data = await scrapeWorldOMeter()
res.render('index', {title: 'Home', data});
});
node.js axios pug
1个回答
0
投票

您可以通过正确使用异步/等待模式来解决此问题,

const getData = () => {
    return axios
        .get('https://www.worldometers.info/coronavirus/')
        .then((res) => {
            const data = [];
            const $ = cheerio.load(res.data);
            $('.maincounter-number').each((index, element) => {
                const numberData = $(element).text();
                data[0] = { numberData: numberData };
            });
            return data;
        })
        .catch((err) => {
            console.log('Error fetching and parsing data: ', err);
        });
};


app.get('/', async (req, res) => {
    const data = await getData();
    res.render('index', { title: 'Home', data: data });
});
© www.soinside.com 2019 - 2024. All rights reserved.