클론코딩/유튜브

챌린지를 하면서 알게된 내용들

최문경 블로그 2020. 7. 6. 13:22

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진수로 표현하라는 의미이다.