我想使用PokeAPI遍历前151个Pokemon,并将每个Pokemon添加到我的mongo数据库中。
我已经有了口袋妖怪的模式,我只是保存他们的字符串名称,以及他们的移动数组。
我正在循环遍历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内?
Promise.all
返回一个值数组。你应该使用insertMany
函数一次插入所有Pokemon:
await Promise.all(promises).then(async (pokemons) => {
try {
await Pokemon.insertMany(pokemons);
} catch (err) {
console.error(err);
}
})