JavaScript Node.js <pending> .map 中的 Promise



我有一个api,它接收一个userId,找到与之关联的Item,然后我需要找到与该itemId关联的所有Account。

当我console.log时,我一直得到[Promise <Pending>]知道如何解决这个问题吗?

router.get('/:userId', auth, async (req, res) => {
try {
const { userId } = req.params
const items = await Item.find({
userId: userId
});
const accounts = items.map(
async item => {
await Account.find({
itemId: item.itemId
})
})
console.log(items)
console.log(accounts)
res.json(accounts);
} catch (err) {
console.error(err.message);
res.status(500).send('Server Error');
}
});

异步函数返回Promise。accounts是一组Promises。你需要使用Promise.all。此外,你的map函数不会返回任何内容。

router.get('/:userId', auth, async (req, res) => {
try {
const { userId } = req.params
const items = await Item.find({
userId: userId
});
const accounts = await Promise.all(items.map(
item => Account.find({
itemId: item.itemId
})
))
console.log(items)
console.log(accounts)
res.json(accounts);
} catch (err) {
console.error(err.message);
res.status(500).send('Server Error');
}
});

最新更新