首页 > 解决方案 > 第三级包括续集

问题描述

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

我遵循与之前的问题相同的步骤,并不断收到错误无法读取属性映射。

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);

  });
 });

标签: node.jssequelize.js

解决方案


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

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 });
}

推荐阅读