node.js - nodejs,postgres,sequelize - 而不是获取文件名,而是尝试获取完整路径
问题描述
在将我的图像作为字符串单独存储在 postgres 中之后。当我去路线时,图像看起来像这样(我目前得到的响应)
"images":"image1.png-2020-11-11T13:15:55.692Z"
我想像这样
"images":["url":"image1.png-2020-11-11T13:15:55.692Z_full","thumbnailUrl":"image1.png-2020-
11-11T13:15:55.692Z_thumb"]
这是我的获取请求
router.get("/", (req, res) =>
Post.findAll({
order: [["createdAt", "DESC"]],
include: { model: Post_Image, attributes: ["id", "images"] },
}).then((posts) => {
const baseUrl = config.get("assetsBaseUrl");
for (let post of posts) {
const postImages = post.Post_Images;
const img = postImages.map((post) => post.dataValues);
const imgFileName = img.map((post) => post.images);
const IMAGES = imgFileName.map((image) => ({
url: `${baseUrl}${image}_full.jpg`,
thumbnailUrl: `${baseUrl}${image}_thumb.jpg`,
}));
console.log(IMAGES)
}
res.send(posts);
});
});
当我执行 console.log(IMAGES) 时,这是我的回复
[
{
url: 'http://LOCALHOST:PORT/assets/image1.png-2020-11-11T13:15:55.692Z_full.jpg',
thumbnailUrl: 'http://LOCALHOST:PORT/assets/image1.png-2020-11-
11T13:15:55.692Z_thumb.jpg'
}
]
我试图做
return{
...post,
images:IMAGES}
但它没有用。
这是我在前往路线时期望从我的 get 请求中得到的响应:
"images": [{"url":"http://192.168.1.103:9000/assets/jacket1_full.jpg","thumbnailUrl" :"http://192.168.1.103:9000/assets/jacket1_thumb.jpg"}]
解决方案
您应该将Post
模型实例转换为普通对象并images
为每个对象添加道具:
const plainPosts = posts.map(x => x.get({ plain: true }))
const resultPosts = []
for (const post of plainPosts) {
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);
如果你只收到一个帖子,那么这应该是这样的:
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`,
}));
console.log(IMAGES)
res.send({
...postAttributes,
images: IMAGES
});
推荐阅读
- c# - 从微服务连接到 postgresql 的最佳实践是什么
- sql - 我将如何在 oracle sql 中编写这个复杂的查询
- python - Numba 的错误 - TypingError: cannot determine Numba type of
- javascript - Babel 似乎没有改变任何东西
- c# - 使用 dotnet 框架在 C# 中分离业务和 UI 逻辑。我该如何重构这个项目?
- smartsheet-api - Smartsheet 应用程序注册:用于应用程序和重定向的 URL 是什么?
- javascript - 网站上标签的 html 有问题
- c# - 如何在 C# 中的索引 0 处获取字典键
- excel - 在查看 ColA 的值时将 1 添加到 ColB
- r - 如何总结R中的比例?