Heim > Fragen und Antworten > Hauptteil
Ich habe ein Problem, ich versuche, die Pokémon-API zu verwenden, aber wenn ich versuche, auf die Angriffs-, HP- und Geschwindigkeitsstatistiken zuzugreifen, werden alle Pokémon angezeigt undefined
! Kann mir jemand sagen, was mit dem API-Aufruf nicht stimmt?
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, }
Ich habe eine index.js-Datei, um den API-Empfang zu testen, und sie gibt Folgendes zurück:
const { apiPokemon } = require('./apiPokemon') async function testApi() { const pokemons = await apiPokemon() console.log(pokemons) } testApi()
API-Struktur:
P粉4035496162024-04-07 10:03:55
您当前的代码没有正确考虑 JSON 结构 - 它正在数组中每个对象的根中查找 name
属性。您需要使用 解构 来访问stat
属性直接在条件中:
hp: urlResponse.data.stats.find(({stat}) => stat.name === 'hp')?.base_stat attack: urlResponse.data.stats.find(({stat}) => stat.name === 'attack')?.base_stat // etc.
或者您也可以将 stat.name
更改为 stat.stat.name
。