nodejs - 对象数组获取信息并为每个对象添加新对象

时间:2021-06-16 22:05:02

标签: node.js

我将在这里解释我的问题以及我想在这个任务中完成什么:

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
}
]

我希望我没有把问题复杂化,祝你一切顺利。 这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

使用 array.mapPromise.allcreator id 替换为创建者对象。我没有足够的信息来提供复制粘贴代码解决方案,但这应该会引导您走向正确的方向。