한주가 참 짧다. 정신없이 MY SQL Basic Sprint가 지나고 MVC Pattern스프린트에 들어왔다.
이번주로 스프린트 기간이 끝난다. 다음주 월요일이면 벌써 Advanced Hiring Assessment 그리고 Project에 들어간다.
과연 프로젝트에 들어갈 수 있을지.
최근 두번 연속으로 21기에서 넘어온 분들과 페어를 하면서 이에 대한 이야기를 했는데, 첫번째는 완벽할 필요는 없다는것.
다시 말해 프로젝트에 들어가고나서야 이제껏 배운것들을 더 심화해서 직접적으로 적용시킬 수 있기때문에 나는 아직 프로젝트에 들어가면 안돼...한번 더할거야..할 필요는 없다는 것이고 다른 하나는 Advanced HA가 생각보다 어렵다는것...하하...죽겠네 진짜^^^
지난번 DB스프린트에서 해결 못해서 호용님을 물고 늘어졌던 부분이 있는데, 시간관계상 더 붙잡고있을수는 없고, 일단 추가적인 부분이었기때문에 (그리고 향후 해결될 가능성이 많기 때문에) 일단 내려놓고 이 Short.ly Sprint에 집중하기로했다.
오늘은 MVC 패턴과 ORM, 그리고 이를 구현하는 Short.ly 스프린트를 시작했다(~내일까지).


1. 모델 → 데이터의 정보를 가지고있다.
자신이 데이터를 가지고 있던지 디비에 연결이 되어 가지고있다.
이 데이터로 컨트롤러에게 물어보다.
모델이 뷰랑 직접 소통하는경우는 거의 없다
Model : 자신이 데이터를 가지고 있거나 혹은 DB와 직접적으로 연결되어있으며, 데이터 상태 변경시에, 컨트롤러에게 알리는 역할을 한다. View와 직접 소통하는 경우는 거의 없다.
Controller : 사용자로부터 받은 입력에 대한 응답을 모델에게 전달하고, 가공된 데이터를 받아 다시 뷰에게 데이터를 넘기는 역할을 한다.
View : 유저에게 직접 보이는 화면으로, 일반적으로Client를 말한다.


ORM은 SQL문을 사용하지 않고 JS문법을 통해서 Object로 DB에 접근할 수 있도록 돕는 역할을 한다. SQL문이 비교적 직관적인 영어스타일의 문법을 가지고 있기 때문에 사용하는것이 어렵지 않다고 해도(아니 어렵지만...) JS문법으로 작성하는 코드 안에서 SQL문법으로 작성하는것은 편한 일은 아니다.
ORM의 하나로서 JS에서 SQL문을 사용할 수 있도록 도와주는 도구 중 하나가 바로 Sequelize 다.

갓 시퀄라이즈...그러나 쉽지는않다..
이번 Short.ly 스프린트는 MVC 패턴을 익히는것과 ORM, Sequelize에 익숙해지는데 목적이 있다.
포크를 받은 폴더의 구조는 다음과 같다.

DB스프린트와 유사한 구조였으나, view(클라이언트)는 생략된 상태였고,M과 C를 제작하는 스프린트다.
기존에 express서버가 만들어져있었고, 분기에 따라 라우팅 -> 컨트롤러 -> 모델로 연결시켰(...키는 중이다)
지난번 DB스프린트 폴더를 열어 비슷하게 흉내를 내며 라우터와 controller는 얼추 작성한 상태다.
(get, post는 작성했고 /:id로 들어오는 부분 작성중!)
//sequelize, sequelize cli 설치방법
$ npm install --save sequelize mysql2 // mysql2는 mysql과 시퀄라이즈를 이어주는 드라이버
$npm install --save-dev sequelize-cli //시퀄라이즈 명령어를 실행하기위한 패키지
...
npx sequelize-cli init // bootstraping(프로젝트 초기단계를 자동으로 설정) 해준다
작업을 마치면 config, migrations,models,seeders 폴더가 생성된다.