-
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 값을 받는다.
riutes.js - video routes.js - video 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는 변수를 뜻한다.
videoRouter.js videoController.js
req.params.id는 url 경로에서 :id 값을 가져온다. 해당 id 값은 videoId 값이다. 이 값으로 DB에서 video를 찾는다. 여기서 populate는 video 모델의 객체를 가져오는 것이다. populate('creator')를 하면 videoSchema에서 객체로 정의한 creator를 가져온다.
videoDetail Video.js View
videoDetail.pug 참고 자료
소스 코드
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