我无法将视频上传到我的数据库 (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">
我尝试了一些解决方案,比如删除模型中的必需属性,但它没有将 videoUrl 连接到数据库,我读到它对这里的一些人有用,但对我没有用。