상세 컨텐츠

본문 제목

ch6.25~ delete, search

노마드/유튜브

by hippo0207 2022. 8. 22. 01:40

본문

1. Delete Videos

  • 1. watch.pug 에 delete버튼 생성
a(href=`${video.id}/delete`) Delete Video →
  • 2. videoRouter에 delete route생성
videoRouter.route("/:id([0-9a-f]{24})/delete").get(deleteVideo);
  • 3. controller 에 deleteVideo 함수생성 & import, export 
  • model.findByIdAndDelete() 
export const deleteVideo = async (req, res) => {
  const { id } = req.params;
  await Video.findByIdAndDelete(id);

  return res.redirect("/");
};
  • delete, remove차이 >> 뭐쨌든 delete로 쓰삼 ㅇㅅㅇ

2. search

  • Model.find({}).sort({}) 
const videos = await Video.find({}).sort({ createdAt: "desc" });
  • search페이지 만들꺼임
    • 링크추가, globalRouter에 /search 추가, search함수생성, pug 생성
    •  
export const search = (req, res) => {
  return res.render("search", { pageTitle: "Search" });
};

================================
extends base.pug

block content 
    form(method="GET")
        input(placeholder="Search by title", name="keyword", type="text")
        input(type="submit", value="Search now")

 

  • /:id >> req.params
  • form post >> req.body
  • form GET >> req.query 
    • keyword가 undefined인경우 생각해야함 >> 2가지케이스
export const search = async (req, res) => {
  const { keyword } = req.query;
  if (keyword) {
    const videos = await Video.find({
      title: keyword,
    });
    return res.render("search", { pageTitle: "Search", videos });
  }
  return res.render("search", { pageTitle: "Search" });
};
-----------------아니면--- let으로 --------------
export const search = async (req, res) => {
  const { keyword } = req.query;
  let videos = [];
  if (keyword) {
    videos = await Video.find({
      title: keyword,
    });
  }
  return res.render("search", { pageTitle: "Search", videos });
};
  • search.pug 에 mixin부분 추가
include mixins/video

each video in videos    
        +video(video)
  • 검색방식 개선하기 > 정규식추가
    • i : 대소문자 무시
    • ^ 앞에만 $ 끝에만

if (keyword) {
    videos = await Video.find({
      title: {
        $regex: new RegExp(`${keyword}$`, "i"),
      },
    });
  }

 

'노마드 > 유튜브' 카테고리의 다른 글

ch7.5~ login, sessions&cookies, logged in user  (0) 2022.08.23
ch7. User authentication  (0) 2022.08.23
ch6.19~ edit video & Middlewares  (0) 2022.08.19
ch6.14~ creating video, exception & validation  (0) 2022.08.18
ch6.8~ mongo  (0) 2022.08.17

관련글 더보기

댓글 영역