-
videoDetailProject using node.js/Cloning Youtube 2020. 8. 29. 08:00
routes.js
videoDetila, editVideo, deleteVideo와 userDetail은 다른 routes와는 다르다. 이들은 고유 id 값에 따라 보여줘야 하는 페이지가 다르기 때문이다. 다른 routes은 key-string이지만 이들은 key(함수명) - value(함수)으로 이루어져 있다. 인자로는 id 값을 받는다.
videoRouter.js
videoRouter.js를 보면은 첫번째 인자인 router를 주는 값도 다르다. 다른 router는 string을 주지만 videoDetail은 routes.videoDetail()로 함수를 준다. 또한 route를 함수로 주는 router들은 다른 router들보다 항상 맨 밑에 있어야 한다. 그렇지 않으면 다른 router들은 작동하지 않는다.
예를 들어, videoDetail()이 upload보다 위에 있을 경우, user가 localhost/videos/upload에 접속하게 되면 저 경로 접속하는 것이 아니라 videoDetail로 접속하게 된다. 왜냐하면 JS는 코드를 위에서부터 아래로 읽기 때문에 upload가 :id 값으로 인식한다. routes.js에서 정의한 :id는 변수를 뜻한다.
videoController.js
req.params.id는 url 경로에서 :id 값을 가져온다. 해당 id 값은 videoId 값이다. 이 값으로 DB에서 video를 찾는다. 여기서 populate는 video 모델의 객체를 가져오는 것이다. populate('creator')를 하면 videoSchema에서 객체로 정의한 creator를 가져온다.
View
참고 자료
소스 코드
https://github.com/zpskek/wetube-v3/commit/6b765766503d1dc910eeb94faa05393985a17ef2
'Project using node.js > Cloning Youtube' 카테고리의 다른 글
userDetail (0) 2020.08.29 videoPlayer.pug (0) 2020.08.29 Upload (0) 2020.08.29 Change password (0) 2020.08.28 editProfile (0) 2020.08.28