데이터베이스 MVC 디자인 연습: cmarket database
MVC - 3티어 아키텍쳐에서 주로 사용
일종의 디자인 패턴이며, 디자인 패턴은 아주 많고 유용한 코드 집합이라 보면 된다.
* Controller:
`비즈니스 로직` 의 관점으로 보면
→ 프로그램을 통해서 어떤 문제를 해결할 것인가?
→ 어떻게 문제를 풀 수 있을지 글로 나열 할 때,
글 하나하나가 `기능`이 되고,
기능이 `비즈니스 로직`이 되고,
로직은 `컨트롤러`로 들어감
* Model: 데이터베이스와 통신하는 역할
* View: 보통 Client의 역할
사전 작업
- mySql에 사용할 database 명으로 데이터베이스를 미리 생성하자
> CREATE DATABASE 사용할데이터베이스명;
- 스키마와 더미 데이터들도 미리 작업
- env 파일 생성 및 사전 설정도 필요
→ 생성 후에 gitingnore에 등록하여 git에 push되어 노출되지 않도록 설정하는 것도 빼먹으면 안된다
//.env 파일 내용
DATABASE_SPRINT_PASSWORD=자신의비밀번호
MVC 디자인 패턴 구현
위의 MVC 패턴에서의 각 역할들을 상기하면서,
Model, Controller, Router 부분을 작성하면 된다
View 부분은 Client에서 담당하는 부분이라, 여기 연습에서는 Server에 해당하는 Model, Controller, Router 부분을 작성
Router
엔드포인트에 맞게 Router를 작성하고 이를 Controller와 연결시키면 된다
→ express 공식 문서를 참고하여 문법 작성을 하면 편하다
Controller
각 엔드포인트에 맞게 API를 지키면서 작성하면 된다
→ 각 HTTP 메서드에 맞게 req, res를 받아 처리하도록 로직을 작성
Model
데이터베이스와 서버 인스턴스를 연결하는 역할. 여기 실습에서는 mySql 데이터베이스를 사용하므로, mySql 모듈을 사용한다
Controller에서 사용할 Model을 여기에서 정의하며, SQL쿼리문으로 DB의 정보를 처리할 수 있도록 로직을 작성
→ SQL 쿼리문을 인자로 받아서 db.query() 메서드를 이용하여 처리하도록 로직을 작성
참고로, 데이터베이스의 쿼리는 비동기 요청임을 잊지 말고 고려해야 한다
이를 고려하여 완성한 코드는 해당 git을 참고
https://github.com/racyde/im-sprint-cmarket-database/tree/master/server
- 참고 사이트 및 공식문서
https://www.npmjs.com/package/mysql#establishing-connections
https://www.w3schools.com/nodejs/nodejs_mysql_insert.asp
'SE Bootcamp 내용 정리' 카테고리의 다른 글
인증/보안 - session 기반 인증 구현하기 실습 (0) | 2021.11.25 |
---|---|
인증/보안 - 기초 1: HTTPS, Hashing, Cookie, Session (0) | 2021.11.24 |
데이터베이스 - MVC 패턴 기초 (0) | 2021.11.16 |
데이터베이스 - 관계형 데이터베이스 보충 내용 (0) | 2021.11.15 |
자료구조/알고리즘 - 중복 순열/순열/조합, DP의 알고리즘 예시 (0) | 2021.11.15 |