DOTY

Search Controller (Backend) 본문

WEB/Backend

Search Controller (Backend)

증식세포 2020. 11. 15. 21:10
728x90
반응형

이번에는 Search Controller에 대해서 알아보자.

 

솔직히 인강 들으면서 머릿속에는 물음표만 가득하다..ㅠㅠㅠㅠㅠ

뭔가 좀 어려워 ㅠ

 

어쨋든

 

일단 검색해야하는 창을 하나 만들어주자.

이런식으로!

form(action=routes.search, method="get")
	input(type="text", placeholder="Search by Term...", name="term")

참고로 pug라는 프로그래밍 언어 해석기로 작성하였다.

큰 틀은 HTML 작성하는 법이랑 비슷하다.

 

여기서 method는 get 으로 해야한다.

GET과 POST가 있는데 GET의 경우에는 서버로부터 정보를 조회하기 위해서 설계되는 메서드 중 하나다.

URL에 있는 값들을 볼 수 있다.

 

search루트로 들어가게 되면 원래 home.pug 대신에 search.pug 에 대한 내용들이 작성되어있다.

 

입력창에 아무거나 입력하고 엔터를 눌른 후에 Controller에서 어떤 내용들이 넘어오는지 search에서 req가 어떤 것이 넘어오는지 보자.

이 이외에도 다른 내용들이 엄청 많이 전송이 되는데 여기서 주목해야할 내용은 query: { term: 'abcdefg' } 이다.

이를 이용해서 search페이지에 내용을 넘겨보자.

export const search = (req, res) => {
    res.render("Search", { pageTitle: "Search", searchingBy: req.query.term});
}

처음에는 대충 이런식으로 작성해도 되나..? 싶었는데

된다! 그런데 더 깔끔한 방법이 있다.

export const search = (req, res) => {
    const {query: { 
        term: searchingBy }} = req; // searchingBy = req.query.term
    res.render("Search", { pageTitle: "Search", searchingBy }); // 이름이 같을땐 하나만 써도 됨.
}

참고로 searchingBy는 다음과 같이 search.pug에 작성해뒀다. (extends layouts/main은 main.pug의 내용을 포함시킨다.)

 

 

 

 

 

이를 이용해서 꼭 Search만 아니어도 쓰임새가 많을 듯 하다.

 

다음에는 POST에 대해서도 작성해두도록 하겠다.

728x90
반응형

'WEB > Backend' 카테고리의 다른 글

ESLint (eslint --init 오류 설정)  (0) 2020.11.27
router.get/post (Account)  (0) 2020.11.17
a. Setting Something(helmet, Parser, morgan...)  (0) 2020.11.09
Babel(feat. nodemon)  (0) 2020.11.09
Express, +import  (0) 2020.11.08
Comments