-
[Wetube] multer middlewareTodayILearned/Wetube 2020. 10. 11. 03:29
node.js에서 파일업로드를 가능하게하는 모듈이다.
middlewares.js
사용방법 : dest로 DB가 저장될 곳을 지정 후, 해당 파일이 업로드되는 router로 export해준다.
import multer from "multer"; import routes from "./routes"; const multerVideo = multer({ dest: "uploads/videos/" }); export const localsMiddleware = (req, res, next) => { res.locals.siteName = "Wetube"; res.locals.routes = routes; res.locals.user = { isAuthenticated: true, id: 1, }; next(); }; export const uploadVideo = multerVideo.single("videoFile");
videoController.js
const export upload = async(req,res) => { const { body: { title, description }, //Title,description은 multer를 이용해 url로 받아올 수 있는 정보이다.) file: { path } //path또한 마찬가지.. } = req; const newVideo = await Video.create({ fileUrl: path, //file url, title, description은 video스키마에서 지정한 key값이다. title, description }); res.redirect(routes.videoDetail(newVideo.id)); //newvidoe의 id를 받아 url에 돌려준다.
컨트롤러에서 upload 시, multer를 통해 받아올 정보(title,description,path)를 지정 후,
해당 요소들을 newVideo에서 불러온다.
이렇게하면, url에 http://localhost:4000/videos/5f6a0602db57a80205815951
이런식으로 multer에서 받아온 file에 대한 내용이 url에 붙게된다.
위 코드의 내용 중, title, description, path 는 MODEL파일인 video.js에서 이미 스키마로 작성한 값이다.
더보기import mongoose from "mongoose"; const videoSchema = new mongoose.Schema({ fileUrl: { type: String, required: "File URL is required", }, title: { type: String, required: "Title is required", }, description: String, view: { type: Number, default: 0, }, createdAt: { type: Date, default: Date.now, }, comments: [ { type: mongoose.Schema.Types.ObjectId, ref: "comment", }, ], }); const model = mongoose.model("Video", videoSchema); export default model;
'TodayILearned > Wetube' 카테고리의 다른 글
노마드 WETUBE챌린지 후기 (0) 2020.10.25 [Wetube] 정규표현식 Search 로직 구성 (0) 2020.09.28 [Wetube] challenge 근황 (0) 2020.09.23 [Wetube] Delete video 구현 (2) 2020.09.16 자바스크립트의 비동기식 처리 (0) 2020.09.09