Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js、multer、express、sequelize、Postgres_Node.js_Postgresql_Sequelize.js_Multer - Fatal编程技术网

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\"},{\"fileN‌​ame\":\"fwfe.pn‌​g-2020-11-08T14:24:3‌​3.268Z\"}]"`
当它看起来像这样时:-

`"images":"[{"fileName":"95aa17.‌​png-2020-11-08T14:24‌​:33.221Z"},{"fileN‌​ame":"fwfe.pn‌​g-2020-11-08T14:24:3‌​3.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中吗?我已经在下面发布了这个问题的答案,如果您需要进一步解释,请查看并发表评论