
어제에 이어서 Short.ly 스프린트를 진행중이다.
스프린트 진행에 앞서 함께하는 페어분께서 express서버에 대한 이해가 어렵다고 하셔서 오전시간을
express로 서버를 구축하는방법, 라우터를 분리하는방법, 그리고 MVC 패턴에 대해서 (내가 아는만큼) 설명해드리는데 썼다.
스프린트가 워낙 정신없이 지나가는지라 나도 생각없이 손에 쳐지는대로 익스프레스 서버를 사용하고 있었는데
말로 설명하려니 내가 명확하게 이해하고있는게 아니라는 생각이 새삼 들었다. 책 들여다보며, 각 미들웨어가 무슨 역할을 하는지, 익스프레스 서버에서 무엇을 선언해야하는지...음 짚고 넘어갈게 참 많다. 당장 다음주 advanced ha가 걱정이다...하아..

이전에 했던 스프린트와 정리해놓은 노션문서들을 이리저리 옮겨가며 설명드리는중. 페어분 얼굴은 살포시 가렸다.
오후에 MVC 패턴에 대해 다시 공부한 내용!!!
오전에 서버를 최대한 열심히 설명드리고나서, 오후에 페어분께 다시 한번 MVC 패턴 특히 컨트롤러의 역할에 대해서 이야기드리는 시간을 가졌다. 어떻게든 설명을 하다보니 머릿속에서 내용이 나름 정리된느낌.
내용은 다음과 같다.

정신없이 씨름하다보니 하나씩 정리가 되긴 하는구나..
npx sequelize-cli init을 입력하면 전술했던것과 같이 config, migrations,models,seeders 네 개의 폴더가 생긴다.
다음은 Config => Config.json에서 sequelize를 설정해주어야한다.

config는 development, test, production 세 가지 항목으로 나뉘는데, 말 그대로 개발환경 ,test환경, productiong환경으로 나뉜다. 사용할 항목의 필드를 자신의 sql 환경에 따라 수정한다. 이 비번은 임시비번이니까...상관없

모델은 SQL의 테이블에 대응하는 개념으로, 시퀄라이즈는 모델과 SQL의 테이블을 연결시켜주는 역할을 한다. 모델을 만드는방법은 두가지로, 하나는 모델 안에 직접 JS파일을 생성하는것이고 다른 하나는 sequelize-cli로 만드는것이다. CLI로 만드는 법을 살펴보면 터미널에 다음과같이 입력한다.
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:strin
다음 입력어를 통해 파일명이 User이고 firstName,lastName, email을 필드로 가진 테이블 모델을 만들 수 있다.

다음과같은 모델이 만들어지며, 두가지 메소드를 가지는데 첫 번째
associate는 다른 모델과의 관계 init은 테이블에 대한 정의를 갖는다. 또 init의 첫번째 인자는 테이블의 형태를, 두번째 인자는 테이블 자체에 대한 설정을 포함한다.
| 테이블 옵션 | 설명 |
|---|---|
| sequelize | model/index와 연결하는 부분 |
| timestamp | boolean값으로 설정하며, default는 true로 createAt 과 updateAt을 만든다 |
| underscored | boolena값으로설정하며, default는 true로 컬럼명을 Camel Case로 만든다. false시 스네이크 케이스로 바꾼다. |
| modelName | 모델 이름을 설정할 수 있다 |
| tableName | 실제 DB에서 만들어지는 테이블명을 말한다. |
| paranoid | default값은 false로, true로 전환시 deleteAt 칼럼이 생긴다. 로우를 삭제할때 완전히 지워지지 않고 지운 시각이 기록된다. (로우를 복원해야 하는 경우가 있을때를 대비하여) |
| charset과 collate | 각 utf-8과 utf-8_general_ci로 설정해야 한글이 입력된다. 이모티콘을 입력하고싶다면 utf8m4와 utf8mb4_general_ci로 입력해야한다. |
모델 정의가 끝났다면, 정의한 모델에 따라 실제 테이블을 제작하는 단계가 필요하다. 이를 migration이라고 말한다. 터미널에 다음과 같이 입력한다.
npx sequelize-cli db:migrate
입력시 
모델에 따라 실제 테이블이 만들어지는것을 확인할 수 있다.