데이터베이스 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

 

 

Node.js MySQL Insert Into

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

mysql

A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.

www.npmjs.com


복사했습니다!