Assignment 12
export const create = async (req, res) => {
if (req.method === "GET") {
res.render("create", { pageTitle: "Create" });
} else if (req.method === "POST") {
const {
body: { title, synopsis, year, rating, genres }
} = req;
const newMovie = await Movie.create({
title,
synopsis,
year,
rating,
genres: genres.split(",")
});
res.redirect(`/${newMovie.id}`);
}
};
강의에서는 globalRouter.get( ~~~ ) globalRouter.post( ~~~ ) 이렇게 라우터에서 method에 따라 컨트롤러를 다르게 연결시켰었는데, 이번 과제에서 정답을 보니까 컨트롤러에서 조건문을 사용해 method에 따라 코드를 작성할 수도 있다는 것을 알게되었다.
export const search = async (req, res) => {
const {
query: { year, rating }
} = req;
if (year) {
const movies = await Movie.find({ year: { $gte: parseInt(year, 10) } });
res.render("movies", { pageTitle: `Filtering by year: ${year}`, movies });
} else if (rating) {
const movies = await Movie.find({ rating: { $gte: parseFloat(rating) } });
res.render("movies", {
pageTitle: `Filtering by rating: ${rating}`,
movies
});
}
};
위와 같이 컨트롤러에서 쿼리문을 사용할 수 있다는 것을 알게되었다.
$gte는 크거나 같은 것을 찾는 쿼리라고 한다. parseInt는 두 개의 매개변수를 갖는다. parseInt(string, radix). radix는 진수이다. 따라서 parseInt(year, 10) 은 year을 10진수로 표현하라는 의미이다.
'클론코딩 > 유튜브' 카테고리의 다른 글
#5 - Passport를 사용해 User Authentication하기 (2) | 2020.07.04 |
---|---|
#4 - Webpack을 이용해 Styling하기 (0) | 2020.05.11 |
#3 - MongoDB를 이용해 데이터 다루기 (0) | 2020.05.08 |
#2 - Pug로 뼈대 만들기 (0) | 2020.05.05 |
#1 - Express.js 기반 다지기 (0) | 2020.05.01 |