我有一个问题,我试图与口袋妖怪API的工作,但当我试图访问的攻击,惠普和速度统计,它显示undefined
的所有口袋妖怪!有谁能告诉我我的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,
}
我有一个index.js文件来测试API的接收情况,这是它返回的内容:
const { apiPokemon } = require('./apiPokemon')
async function testApi() {
const pokemons = await apiPokemon()
console.log(pokemons)
}
testApi()
API结构:
1条答案
按热度按时间m1m5dgzv1#
您当前的代码没有正确考虑JSON结构-它正在数组中每个对象的根中查找
name
属性。您需要使用destructuring在以下条件中直接访问stat
属性:或者,您可以将
stat.name
更改为stat.stat.name
。