이번 글에서는 이전 글에서 만든 Model을
실제 Controller에서 활용하는 법에 대해서 다루겠습니다.
이 글에서 중점적으로 다뤄지는 2가지 Javascript개념이 있습니다.
첫째는, async-await, 둘째는 try-catch입니다.
각각이 home controller를 완성하는데 어떻게 활용되는지 알아보겠습니다.
1) 우선, videoControllers.js에
import Video from "../models/Video"를 통해서 Video model을 import 합니다.
Model은 데이터베이스의 Element가 아닙니다. Element를 받는 통로일뿐입니다.
즉, Model은 '무엇'을 할지 정의된 것이지, 그 자체로 데이터를 담고 있는 것이 아닙니다.
2) async 키워드와 const videos = await Video.find({}); 를 추가해줍니다.
이 두 키워드가 필요한 이유는,
home에서 실제 video를 찾기까지 시간이 걸리기 때문입니다.
async는 '이 Function의 어떤 부분은 꼭 기다려야 한다'는 의미이고,
await는 '다음 과정이 끝날 때까지 잠시 기달려달라'는 의미입니다.
이렇게 함으로써 데이터베이스에 있는 모든 Video를 가져올 수 있습니다.
만약 async-await 키워드가 없다면 Video를 다 살펴보기도 전에
Javascript가 다음 res.render로 넘어갑니다.
3) 이 때, const videos = await Video.find({}); 를 통해 Video를 찾는 과정이 끝났다 하더라도,
여기서 이 과정이 잘 끝난 것인지, 에러가 있는지 알 수가 없다.
이것은 좋지 않고, 발생할 수 있는 모든 error를 잡아야 한다.
이 때, try-catch문을 활용할 수 있다.
4) 만약 try-catch문이 없이, 그냥 Error가 발생할 경우에 함수는 그대로 실행이 중단이 되게 됩니다.
5) 하지만 try-catch문이 있으면, error 발생 시 catch 문에서 error를 잡아줄 수 있고,
catch 블록 안의 코드가 실행되게 됩니다.
"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."