第三级包括续集

third level include sequelize

目前我正在尝试向每个用户显示他们喜欢的帖子,对于我想使用上述方法将图像显示为 url 和缩略图 url 的帖子。

我按照与之前问题相同的步骤进行操作,但不断收到错误无法读取 属性 地图。

router.get("/likes", auth, (req, res) => {

  let { id } = req.user;
 User.findByPk(id, {
include:[{model:Likes,
include: [
  {
    model: Post,
    include: [
      { model: Post_Image, attributes: ["id", "images"]},
    ],
  },
],
  }],
  }).then((user) => {
if (!user)
  return res.status(404).send();

const baseUrl = config.get("assetsBaseUrl");

const plainUser = user.get({ plain: true });
const resultLikes = [];
for (const like of plainUser.Likes) {
  const { Post_Images, ...postAttributes } = like;
  const IMAGES = Post_Images.map((postImage) => ({
    url: `${baseUrl}${postImage.images}_full.jpg`,
    thumbnailUrl: `${baseUrl}${postImage.images}_thumb.jpg`,
  }));

  resultLikes.push({ ...postAttributes, images: IMAGES });
}
res.send(resultLikes);

  });
 });

您错过了一级包含的模型:Post。 您正在尝试从 Like.

获取 Posts 的道具
for (const like of plainUser.Likes) {
  const { Post_Images, ...postAttributes } = like.Post;
  const IMAGES = Post_Images.map((postImage) => ({
    url: `${baseUrl}${postImage.images}_full.jpg`,
    thumbnailUrl: `${baseUrl}${postImage.images}_thumb.jpg`,
  }));

  resultLikes.push({ ...postAttributes, images: IMAGES });
}