[클론코딩] 유튜브 8일차


💕 진도

[풀스택] 유튜브 클론코딩

3.5~3.12 강의


😁 Multer

  • multer는 form post에서 file 처리를 쉽게 해주는 라이브러리이다.
  • 이를 이용하면 file의 url 및 정보를 쉽게 알 수 있다.

🤣 그 밖의 코드들

// videoController.js

import routes from "../routes";
import Video from "../models/Video";

export const home = async (req, res) => {
  try {
    const videos = await Video.find({}).sort({
      '_id': -1
    });
    res.render("home", {
      pageTitle: "Home",
      videos,
    }); // 이건 프레임워크 규약
  } catch (error) {
    console.log(error);
    res.render("home", {
      pageTitle: "Home",
      videos: [],
    }); // 이건 프레임워크 규약
  }
};
export const search = async (req, res) => {
  const {
    query: {
      term: searchingBy
    },
  } = req;
  let videos = []
  try {
    videos = await Video.find({
      title: {
        $regex: searchingBy,
        $options: "i"
      }
    })
  } catch (error) {
    console.log(error)
  }
  res.render("search", {
    pageTitle: "Search",
    searchingBy,
    videos
  });
};
export const getUpload = (req, res) =>
  res.render("upload", {
    pageTitle: "Upload",
  });

export const postUpload = async (req, res) => {
  const {
    body: {
      title,
      description
    },
    file: {
      path
    },
  } = req;
  // To do: upload and save video
  const newVideo = await Video.create({
    fileUrl: path,
    title,
    description,
  });
  res.redirect(routes.videoDetail(newVideo.id));
};

export const videoDetail = async (req, res) => {
  const {
    params: {
      id
    },
  } = req;
  try {
    const video = await Video.findById(id);
    res.render("videoDetail", {
      pageTitle: video.title,
      video,
    });
  } catch (error) {
    console.log(error);
    res.redirect(routes.home);
  }
};

export const getEditVideo = async (req, res) => {
  const {
    params: {
      id
    },
  } = req;
  try {
    const video = await Video.findById(id);
    res.render("editVideo", {
      pageTitle: `Edit ${video.title}`,
      video,
    });
  } catch (error) {
    console.log(error);
    res.redirect(routes.home);
  }
};

export const postEditVideo = async (req, res) => {
  const {
    params: {
      id
    },
    body: {
      title,
      description
    },
  } = req;
  try {
    await Video.findOneAndUpdate({
      _id: id,
    }, {
      title,
      description,
    });
    res.redirect(routes.videoDetail(id));
  } catch (error) {
    console.log(error);
    res.redirect(routes.home);
  }
};

export const deleteVideo = async (req, res) => {
  const {
    params: {
      id
    }
  } = req
  try {
    await Video.findOneAndDelete({
      _id: id
    })
  } catch (error) {
    console.log(error)
  }
  res.redirect(routes.home)
}

좋은 웹페이지 즐겨찾기