在 node.js 中上传多张图片时出错

Error uploading multiple images in node.js

我正在尝试在 mongo 数据库中上传图片,但在邮递员中单击发送后,它显示“img”:null

我在前端使用 flutter,所以我想休息一下 api 我可以上传单张图片,但是当我尝试上传多张图片时,它显示 “img”:空

我也创建了一个模式

我设置的地方

 img:{
type: array,
default:"",
}


const express = require("express");
const router = express.Router();
const Profile = require("../models/profile.model");
const middleware = require("../middleware");
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "./uploads");
  },
  filename: (req, file, cb) => {
    cb(null, req.decoded.username + ".jpg");
  },
});

const fileFilter = (req, file, cb) => {
  if (file.mimetype == "image/jpeg" || file.mimetype == "image/png") {
    cb(null, true);
  } else {
    cb(null, false);
  }
};

const upload = multer({
  storage: storage,
  limits: {
    fileSize: 1024 * 1024 * 6,
  },
  // fileFilter: fileFilter,
});

//adding and update profile image
router
  .route("/add/image")
  .patch(middleware.checkToken, upload.array("img",5), (req, res) => {
    Profile.findOneAndUpdate(
      { username: req.decoded.username },
      {
        $set: {
          img: req.files.path,
        },
      },
      { new: true },
      (err, profile) => {
        if (err) return res.status(500).send(err);
        const response = {
          message: "image added successfully updated",
          data: profile,
        };
        return res.status(200).send(response);
      }
    );
  });

当您上传多张图片时,multer 会像这样创建一个对象数组:

req.files : [{…}, {…}, {…}]

属性个对象之一是路径,所以有很多方法可以插入到img中的路径。 如果 img 的类型在模式中定义了 array [] 你可以在 findOneAndUpdate 中这样做:

      {
        $set: {
          img: req.files.map(file => file.path),
        },
      }