brunch

You can make anything
by writing

C.S.Lewis

by 이종복 Jun 07. 2019

home controller 완성하기

이번 글에서는 이전 글에서 만든 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/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."

매거진의 이전글 Comment Model 만들기

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari