Node.js、multer、express、sequelize、Postgres
我目前正在尝试在数据库中存储图像 这是我的帖子模型:-Node.js、multer、express、sequelize、Postgres,node.js,postgresql,sequelize.js,multer,Node.js,Postgresql,Sequelize.js,Multer,我目前正在尝试在数据库中存储图像 这是我的帖子模型:- id: { field: "PostId", type: Sequelize.INTEGER, primaryKey: true, }, title: { type: Sequelize.STRING, }, images: { type: Sequelize.STRING } 这是我的发帖请求:- router.post( "/", [ upload.array("images&qu
id: {
field: "PostId",
type: Sequelize.INTEGER,
primaryKey: true,
},
title: {
type: Sequelize.STRING,
},
images: {
type: Sequelize.STRING
}
这是我的发帖请求:-
router.post(
"/",
[
upload.array("images", config.get("maxImageCount")),
imageResize,
],
async (req, res) => {
const paths = await req.files.map((file) => ({ fileName: file.filename }));
Posts.create({
title: req.body.title,
images: JSON.stringify(paths),
}).then(
() => {
res.status(201).send({
msg: "upload successful",
});
},
(validation) => {
res.status(422).json({
errors: validation.errors.map((error) => {
return {
fieldName: error.path,
message: error.message,
};
}),
});});});
我现在使用multer将图像存储在磁盘上,并使用sharp调整图像大小
我的问题是,当我转到localhost/posts时,图像是这样的:-
`"images":"[{\"fileName\":\"95aa17.png-2020-11-08T14:24:33.221Z\"},{\"fileName\":\"fwfe.png-2020-11-08T14:24:33.268Z\"}]"`
当它看起来像这样时:-
`"images":"[{"fileName":"95aa17.png-2020-11-08T14:24:33.221Z"},{"fileName":"fwfe.png-2020-11-08T14:24:33.268Z"}]"`
经过数小时的研究,我发现为了获得最佳实践,我不应该在数组上使用JSON.stringify
我该如何解决这个问题?我设法解决了这个问题。以下是解决方案:
router.post(
"/",
[
upload.array("images", config.get("maxImageCount")),
imageResize,
],
async (req, res) => {
const paths = await req.files.map((file) => ({ fileName: file.filename }));
Posts.create({
title: req.body.title,
images: paths.map((x) => ({ images: x.fileName }));
}).then(
() => {
res.status(201).send({
msg: "upload successful",
});
},
(validation) => {
res.status(422).json({
errors: validation.errors.map((error) => {
return {
fieldName: error.path,
message: error.message,
};
}),
});});});
我正在将图像作为文件名存储在数据库中。有同样的问题。有什么改进吗?您需要保存在数据库文件路径或BLOB中吗?我已经在下面发布了这个问题的答案,如果您需要进一步解释,请查看并发表评论