第二个层次包括使用sequelize



如果用户可以有很多帖子,每个帖子可以有很多图片,这是否意味着用户和图片是关联的?因为目前我正在尝试为每个用户显示这些帖子,对于这些帖子,我想使用上面提到的方法将图像显示为url和thumbnailur。我一直收到一个错误,Post_Image与User没有关联。

我当前正在尝试此代码,但一直收到错误无法读取属性映射。

router.get("/posts", auth, (req, res) => {
let { id } = req.user;
User.findByPk(id, {
include: [
{
model: Post,
include: [{ model: Post_Image, attributes: ["id", "images"] }],
},
],
}).then((post) => {
if (!post)
return res.status(404).send();
const baseUrl = config.get("assetsBaseUrl");
const plainPost = post.get({ plain: true });
const { Post_Images, ...postAttributes } = plainPost;
const IMAGES = Post_Images.map((postImage) => ({
url: `${baseUrl}${postImage.images}_full.jpg`,
thumbnailUrl: `${baseUrl}${postImage.images}_thumb.jpg`,
}));
res.send({ ...postAttributes, images: IMAGES });
});
});

在这种情况下,它类似于处理几个帖子,就像我之前的回答中一样

区别在于在哪里调用get({ plain: true }):

User.findByPk(id, {
include: [
{
model: Post,
include: [{ model: Post_Image, attributes: ["id", "images"] }],
},
],
}).then((user) => { // we got a user here and not a post or posts
if (!user)
return res.status(404).send();
const baseUrl = config.get("assetsBaseUrl");
const plainUser = user.get({ plain: true })
const resultPosts = []
for (const post of plainUser.Posts) {
const { Post_Images, ...postAttributes } = post
const IMAGES = Post_Images.map((postImage) => ({
url: `${baseUrl}${postImage.images}_full.jpg`,
thumbnailUrl: `${baseUrl}${postImage.images}_thumb.jpg`,
}));
console.log(IMAGES)
resultPosts.push({
...postAttributes,
images: IMAGES
})
}
res.send(resultPosts);

最新更新