Masalah mendapatkan statistik tertentu (Statistik) daripada PokeAPI menggunakan Axios dan Node.js
P粉953231781
P粉953231781 2024-04-06 18:46:35
0
1
725

Saya ada masalah, saya cuba menggunakan API Pokemon, tetapi apabila saya cuba mengakses statistik serangan, HP, dan kelajuan, ia menunjukkan semua Pokemon undefined! Bolehkah sesiapa memberitahu saya apa yang salah dengan panggilan API?

const axios = require('axios');

const apiPokemon = async () => { 
    try {
        const pokemons = await axios
        .get('https://pokeapi.co/api/v2/pokemon?limit=50')
        const secondUrlMap = await  pokemons.data.results.map(  pokemon  => {
            return pokemon.url
        })
        const pokemonArr = await Promise.all(secondUrlMap.map(async(url) => { 
            const urlResponse = await axios(url)
            return{
                id:urlResponse.data.id,
                name:urlResponse.data.name,
                height:urlResponse.data.height,
                weight:urlResponse.data.weight,
                hp:urlResponse.data.stats.find(stat => stat.name === 'hp')?.base_stat,
                attack:urlResponse.data.stats.find(stat => stat.name === 'attack')?.base_stat, 
                speed:urlResponse.data.stats.find(stat => stat.name === 'speed')?.base_stat,
                types:urlResponse.data.types.map((type) => type.type.name),
                img:urlResponse.data.sprites.other['official-artwork'].front_default,
            }
        }))
        return pokemonArr
    } catch (error) {
        return ({error:error.message})
    }
}

module.exports =  {
    apiPokemon,
}

Saya mempunyai fail index.js untuk menguji penerimaan API dan inilah yang dikembalikan:

const { apiPokemon } = require('./apiPokemon')

async function testApi() { 
    const pokemons = await apiPokemon()
    console.log(pokemons)
}

testApi()

Struktur API:

P粉953231781
P粉953231781

membalas semua(1)
P粉403549616

Kod semasa anda tidak mengambil kira struktur JSON dengan betul - ia mencari dalam akar setiap objek dalam tatasusunan name 属性。您需要使用 解构 来访问stat untuk sifat secara langsung dalam keadaan:

hp: urlResponse.data.stats.find(({stat}) => stat.name === 'hp')?.base_stat
attack: urlResponse.data.stats.find(({stat}) => stat.name === 'attack')?.base_stat
// etc.

Atau pun boleh guna stat.name 更改为 stat.stat.name.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan