코드스테이츠 35일차 [ DB실습 ]

DB실습

와... 난 너무 어려웠다...

일단 기본적으로 값이 어디서 들어오고 하는것이 머리에 들어 오지가 않았다;;

거의 하나도 해결을 못했었다... ㅠㅠ

일단 우리는 값이 어느 메서드를 타는지 부터 알아야 한다.

  • 이후의 내용은 모두 cmarket내용이기 떄문에 코드가 없는 사람은 이해를 할수가 없을 것이다.
  • 또한 누군가에게 설명하기 보다는 내가 이해를 하기 위해서 적는 글이다.

홈페이지 랜더링 하는 부분은 controllers부분이다

그리고 db에 있는 값을 가져오는 부분은 모두 models부분이다.

그리고 이러한 Url을 연결해 주는 부분이 routes부분이다.

routes

이 부분을 먼저 살펴 보자

  • 어떻게 값이 들어오고 전송이 되는지를 알아야 한다고 생각한다.


기준이 되는 js파일이다.

  • 해당 경로로 들어오는 값들은 지정해준 js파일로 가라는 뜻이다.
  • /items는 itemRouter로 가라는 느낌이다.

itemRouter


한가지 경로만 처리하고 있다.

  • localhost/3000인 경우이다.
  • 나도 처음에는 localhost/3000/items에 들어오는 경로를 처리하는게 아닐까 라는 생각을 했는데
  • 그건 아니엿다.. 이유는 나도 잘;;; ㅠㅠ

후에 알게 되면 다루어 보고 일단 홈페이지로 들어오게 되면 controller.items.get를 실행 시킨다고 한다.

usersRouter


이것 또한 간다.

둘 모두 controller를 불러오기 떄문에 controller를 보자

controller


controller에서는 models를 불러와서 사용을 하고 있다.

그러면 우리는 먼저 models를 확인해야 한다.

models

이것이 모델이다....

이 영역은 db에 있는 값을 꺼내 온다는 것을 알수가 있다.

처음 홈페이지를 보여줄떄 controller의 item.get를 활용을 하였고
controller에서는 models의 get을 불러온다는 것을 알수가 있다.

그러 models의 get을 보면 sql문을 통해서 값을 가져 온다는 것을 알수가 있다.

item라우터에서 하는 역할은 홈페이지만 담당을 하고 있다.

우리가 그러면 주의 깊게 봐야하는 곳은 user라우트 부분과 order부분이다

우리가 장바구니에 있는 물품을 구매 버튼을 눌러서 구매한다고 해보자
그러면 입력되어잇는 코드에 따라서 주문 내역으로 이동하게 된다.

이떄 주문 내역을 담당하고 있는 부분이 order.get부분이며
상품 값을 보내는 부분이 order.post부분이다.

그러면 순서대로 일단 화면이 보이게 되면서 get을 받고 이후 post요청이 발동이 된뒤에 가져온 값을 다시 보여주어야 하기 때문에 get요청을 다시 받게 된다.

일단 post요청을 먼저 살펴보자.

  • 처음에 get요청으로는 아무것도 없는 것이 정상이다.
  • 왜냐하면 값을 가져와야 하기 때문에
  • 하지만 값이 없으면 아무것도 안가져오기 떄문에 값을 보내는 전송부터 보는 것이다.


일단 들어오는 값이 없으면 bad req를 보내 주어야 하며

있을시에는 models를 호출 해 주어야 한다.

그럼 models에서는 값을 받아서 처리를 하게 된다.

일단 controllers에서 값이 있는 지 확인을 하였기 때문에 따로 확인 작업은 필요가 없다는 것을 알수가 있다.

우리가 쿼리문을 작성하기 위해서는 일단 어떤 테이블이 있고 어떤 연관과계 또한 어떤 데이터들이 담겨있는지를 알아야 한다.

각각 테이블에 있는 컬럼들이다.

이를 바탕으로 우리는 데이터의 연간관계를 알수가 있다.

쿼리문을 원활하게 작성하기 위해서 스키마를 얼추 작성을 해보았다.

그럼 이제 sql문을 작성해 보자

주문하는 요청을 주문 리스트에 보여주어야 하기 떄문에 일단 값을 orders에 넣어주어야 할것이다.

  • queryString

이후 값을 이제 db에 쏘아주면 되는데 이떄 우리는 한개가 아닌 다수의 상품을 보내야 할떄가 있다.

그럴떄에는 2차원 배열로 만들어 주어야 한다.

  • 이 부분은 후에 다루어 보자

result.insertId = pk인 id값이다.

이런식으로 2차원 배열로 만들어서 보내게 되면 해당 값이 자동으로 쿼리문에서 value로 순서대로 작동을 하게 된다.

이러면 post요청이 끝나게 된다.

  • 나도 잘 이해를 한것이 아니라서 맞는 지는 모르겠지만
order - 장바구니 페이지에 있는 상품들
order_items - 주문 목록에 있는 상품들

이렇게 구성이 된게 아닐까..?

이후 get sql문을 통해서 값을 가져오면되는데...

  • 난 이 부분을 도저히 모르겠다;; ㅠㅠㅠ 너무 복잡하다...

얼추 끝난것 같다..

내 스스로 짜라고 하면 다시는 못짤것 같다..

그렇다면 제대로 이해를 한것이 아니라는 것인데.. 이 부분은 천천히 계속해서 봐야 할껏 같다.

이떄가지의 스프린트중 가장 어려웠었고 내 개인적으로 가장 실패했던 스프린트 같다.. ㅠㅠ

좋은 웹페이지 즐겨찾기