【发布时间】:2023-01-07 16:00:23
【问题描述】:
我想使用 PokeAPI 遍历前 151 个 Pokemon,并将每个 Pokemon 添加到我的 mongo 数据库中。
我已经有了 pokemon 的模式,我只是在其中保存它们的字符串名称和它们的一系列动作。
我正在遍历 axios 调用,并将它们存储到一系列承诺中,并等待它们解决
app.get('/', async (req, res) => {
const promises = []
for (let i = 1; i <= 151; i++) {
promises.push(axios.get(`https://pokeapi.co/api/v2/pokemon/${i}`))
}
await Promise.all(promises).then(async (p) => {
const newPokemon = new Pokemon({
name: p.name,
moves: p.moves,
})
await newPokemon.save()
})
})
这完全正确吗?我应该在哪里进行数据库查询,在单个 axios 调用中还是在 promise.all 中?
【问题讨论】:
-
这是不正确的。在您的代码中,
p将是所有 axios 调用的解析值数组。因此,p.name和p.moves将是undefined,因为p是您的值的数组。