【发布时间】:2021-08-06 16:42:14
【问题描述】:
我在我正在构建的社交媒体中有这条路线,该路线遍历您关注的所有用户并获取他们的帖子。我正在使用 await 和 .exec() 但我得到的输出是一个未决的承诺。
路线:
router.get("/following", auth, async (req, res) => {
try {
const user = await User.findOne({ firebaseUID: req.authId });
const posts = await user.following.map(async (usr) => {
await Post.find({ userID: usr.user }).exec();
});
console.log(posts);
res.json(posts);
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
});
我从中得到的输出是[ Promise { <pending> }, Promise { <pending> } ]。
我不确定为什么当我在异步函数和 .exec() 中使用 await 时,promise 没有得到解决?
【问题讨论】:
-
您错过了对您的一系列承诺的
Promise.all调用。你不能awaitmap返回的数组。 -
顺便说一句,你真的不应该为每个用户 ID 拨打一个
find电话 - 一次全部获取!
标签: javascript node.js mongodb express mongoose