노마드/유튜브
ch6.25~ delete, search
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"),
},
});
}