我将在这里解释我的问题以及我想在这个任务中完成什么:
const getPosts = async (req, res, next) => {
let posts;
try {
posts = await Status.find({}).sort({ date: "desc" });
} catch (err) {
const error = new HttpError(
'backend_message1',
500
);
return next(error);
}
return res.json({ posts: posts });
};
使用此代码,我从数据库中获取所有帖子,输出如下所示:
[
{
_id: 60b39c057a5db20314c69b37,
creator: 609b176f4207251738e18aaa,
body: 'test:d',
date: 'Sun May 30 2021 16:07:01 GMT+0200 (GMT+02:00)',
__v: 0
},
{
_id: 60b39b827a5db20314c69b36,
creator: 609b176f4207251738e18aaa,
body: 'tsx:d',
date: 'Sun May 30 2021 16:04:50 GMT+0200 (GMT+02:00)',
__v: 0
},
{
_id: 60b395ec7a5db20314c69b34,
creator: 609b176f4207251738e18aaa,
body: "dddddd",
date: 'Sun May 30 2021 15:41:00 GMT+0200 (GMT+02:00)',
__v: 0
},
{
_id: 60b391ec7a5db20314c69b33,
creator: 609b176f4207251738e18aaa,
body: "lorem",
date: 'Sun May 30 2021 15:23:56 GMT+0200 (GMT+02:00)',
__v: 0
}
]
现在正如你所看到的,我在这里有创建者 ID,但我没有在前端使用两个 fatches,而是从后端获取用户信息,并且只为每个这个对象提供广告对象,然后更新它然后映射到前端。我仍然不知道在后端做这一切是否是个好主意,但是当我尝试在前面做时,我无法成功,因为我的反应很慢..
所以我想要的是,当我获取帖子时,我也想获取创建者信息,然后使用该创建者信息(如名称和图像)更新每个对象。所以最终结果应该是这样的:
[
...
{
_id: 60b39c057a5db20314c69b37,
creator: 609b176f4207251738e18aaa,
body: 'test:d',
date: 'Sun May 30 2021 16:07:01 GMT+0200 (GMT+02:00)',
creatorinfo: {
username: Test Test,
email: test@live.com,
picture: somepictureimage.jpg
}
__v: 0
}
]
我希望我没有把问题复杂化,祝你一切顺利。 这样做的正确方法是什么?
答案 0 :(得分:0)
使用 array.map
和 Promise.all
将 creator
id 替换为创建者对象。我没有足够的信息来提供复制粘贴代码解决方案,但这应该会引导您走向正确的方向。