我应该在每个取回请求内做数据库更改,还是在Promise.all内?



我想使用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);
}
})

最新更新