cari

Rumah  >  Soal Jawab  >  teks badan

Masalah mendapatkan statistik tertentu (Statistik) daripada PokeAPI menggunakan Axios dan Node.js

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粉953231781P粉953231781299 hari yang lalu851

membalas semua(1)saya akan balas

  • P粉403549616

    P粉4035496162024-04-07 10:03:55

    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.

    balas
    0
  • Batalbalas