cmarket-database

Siwoo Pak·2021년 10월 17일
0

DB

목록 보기
11/13

1. mysql 초기 세팅

# mysql 접속 후 cmarket 데이터베이스 생성
mysql> create database cmarket;
# mysql 접속 종료 후 cmarket 데이터베이스에 스키마 복사, -D 옵션은 데이터베이스 지정
$ mysql -usiwoo -p < server/schema.sql -Dcmarket
# 복사된 테이블에 데이터 복사
$ mysql -usiwoo -p < server/seed.sql -Dcmarket

2. .env파일 설정

  • .env.example파일에서 해당계정의 비밀번호 입력 후 .env파일로 이름 변경

3. 서버 흐름

  • 클라이언트에서 GET /items 요청이 들어오면,
  • '/'가 포함된 요청이면 indexRouter로 이동. indexRouter는 /route폴더에 index.js파일을 읽게 된다.
  • uri가 'items'라면 itemsRouter(items.js), 'users'라면 usersRouter(users.js)로 이동. 지금의 요청은 '/items'요청이므로 items.js로
  • RestApi의 Get method를 사용하였기에 routet.get()를 사용하여 컨트롤러의 items.get함수 호출
  • controller에서 model 컴포넌트의 items.get함수 호출함
  • db.query()를 이용하여 작성한 쿼리를 실행한 후, 콜백함수로 실패시 error, 성공시의 결과를 result를 전달.
  • 다시 컨트롤러 이동하여 실패시 500 상태코드와 'Internal Server error' 텍스트를 클라이언트에 전달.
    성공시 200 상태코드와 결과를 json형식으로 클라이언트에 전달한다.

4. '/users/:userId/orders' uri 요청 처리

  • Get 요청인 경우
    • /controller/index.js
    • /model/index.js
  • Post 요청인 경우엔
    • 우선 orders 테이블에 유저아이디와 주문한 상품의 전체가격을 추가 해줌
    • orders테이블 id를 가져오고 싶으면, result.insertId를 사용하면 좀 전에 실행된 쿼리 결과의 id를 가져올 수 잇음.
    • 주문정보의 각각의 상품의 정보를 담고 있기에 db.query()의 두번째 인자는 배열 형태로 들어온다.
profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글