如何修复“ValidationError:视频验证失败:videoUrl:需要路径`videoUrl`。在model.Document.invalidate”

问题描述 投票:0回答:0

我无法将视频上传到我的数据库 (mongo db)。我不知道我做错了什么请帮忙。这是下面的代码:

这是我在 models/Video.js 中的模型

const VideoSchema = new mongoose.Schema({
    userId:{
        type: String,
        required: true, 
    },
    title: {
        type: String, 
    },
    description:{
        type: String, 
       
    }, 
    imgUrl:{
        type: String
    },
    videoUrl: {
        type: String, 
        required: [true, "You must upload a video"]
    }, 
    views: {
        type: Number,
        default: 0,
      },
    tags:{
        type: [String], 
        default: []
    },
    cloudinary_id: {
        type: String
      }
},({timestamps: true}))

// Exporting 
export default mongoose.model("Video", VideoSchema)

这是在我的 controllers/video.js 中

export const newVideo = async (req, res, next) => {
    const addVideo = new Video({ userId: req.user.id, ...req.body });
    try {
      const savedVideo = await addVideo.save();
      res.status(200).json(savedVideo);
    } catch (err) {
      next(err);
    }
  };

然后我在 middlewares/multer.js 中将 multer 设置为中间件

import multer from "multer"

const multerStorage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, "public");
      },
      filename: (req, file, cb) => {
        const ext = file.mimetype.split("/")[1];
        cb(null, `videos/admin-${file.fieldname}-${Date.now()}.${ext}`);
      },
    
})

const multerFilter = (req, file, cb) => {
  if (!file.originalname.match(/\.(mp4|MPEG-4|mkv)$/)) { 
    return cb(new Error('Please upload a video'))
  }else {
      // cb(new Error("Not a PDF File!!"), false);
      cb(undefined, true)

    }
  };

  export const upload = multer({
    storage: multerStorage, 
    fileFilter: multerFilter
  })

这是我的路由器/video.js

router.post("/create", verifyToken, upload.single("videoUrl"), newVideo, (req,res,next)=>{
  console.log(req.file)
  next()
})

这是我的前端

<form action="/videos/create" enctype="multipart/form-data" method="POST" id="contactForm" class="contactForm">

This is the result of everything

我尝试了一些解决方案,比如删除模型中的必需属性,但它没有将 videoUrl 连接到数据库,我读到它对这里的一些人有用,但对我没有用。

node.js mongodb express multer
© www.soinside.com 2019 - 2024. All rights reserved.