Enjoy Programming

Express - mongoDB Getting Video by ID 본문

JavaScript/Node.JS

Express - mongoDB Getting Video by ID

LEETAEEON 2021. 5. 6. 02:17

비디오 재생까지 이루어졌다.

 

이제 비디오링크를 클릭하면 비디오 상세정보 페이지로 이동하게 되고 url에 video의 id를 받고 있는 것을 확인 할 수 있다

이제 할 일은 video의 자세한 정보를 생성하는 일이다.

 

컨트롤러상에 videoDetail 컨트롤러는 만들어져있고 이제 파라미터로 id를 받으면 된다.

저번에 짚고 넘어갔어야 할 쿼리스트링을 좀더 알아보자.

기본적으로 url에 접근하면 path를 통해 결과를 페이지에 로딩 해준다.

예를 들어 http://google.com/taeeon으로 접속하면 taeeon이라는 path에 결과를 뿌려준다. 

언제나 같은 결과를 보여주는 것이다. 유저프로필 페이지라면 접속자가 다른 경우에는 다른 결과를 보여줘야 하는데

그렇다면 같은 url에서 어떻게 여러 결과를 보여줄 수 있을까 . 이때 쿼리스트링을 이용한다.

http://google.com/taeeon?id=lee 이런 방식인 것이다 . 여기서 물음표 뒤의 아이디값이 바로 쿼리 스트링이다. 

앞서 search컨트롤러는 querystring을 통해 접근하여 아래와 같이 위 예제처럼 접근이 되었다.

최근에는 저렇게 물음표가 뜨는 쿼리스트링 방식이 아닌 path방식인 search/myson이런 방식으로 바뀌는 추세라고 한다

이런 방식을 semantic URL이라고 하는데 path로 접근 하는 것이다. 

이 경우 route설정을 앞서 한번 나온 :id 처럼  " : " 를 붙여주면 된다.

그리고 이 id에 접근 할때는 req.params.id로 접근해주면 :id가 변수로 설정되어있어 유저가 요청하는 id값에 따라 다른 결과를

보여 줄 수 있는 것이다.

 

자 다시 돌아가서 videoDetail 컨트롤러를 손보자

유저가 클릭한 비디오의 정보를 가져와야 한다.

클릭하면 url의  id를 req.params로 가져오고 Video 모델에서 findById를 통해 이 아이디의 비디오를 가져오자

그리고 콘솔창에 video의 정보를 보면

만약 없는 정보가 입력된다면 에러를 뿜게 된다.

이제 try catch를 통해 예외처리를 해주자.

에러가 생기면 홈페이지로 redirect해주고 정상적으로 돌아간다면 video지역변수를 랜더링 해주자.

 

이제 할 일은 videoDetail 템플릿에 비디오를 띄우고 타이틀 조회수 description을 띄워주자