여태 만든 건 장바구니에 하나의 Product이 담긴다는 전제 하에,
product id 로 req.body에 받고
데이터베이스에 넣었는데,
이제는
장바구니에 여러 products 를 넘어서
넘기는 거를 해야 한다.
이후 아래와 같이 수정됨. 여러 제품을 한번에 담는 거로. products에 배열로 담는데, 프론트에게 받는 값은 productId로 생각하면 됨
{
"userId": 2,
"totalPrice": 3000 ,
"shippingMethod" : "방문수령",
"paymentId": 1,
"products": [
{"productId": 1,
"quantity" : 1},
{"productId": 2,
"quantity" : 1}
]
}
과정
router는 변함이 없고,
orderDao도 데이터베이스에서 productId 그대로 가져오기에 변함이 없다.
controller 와 orderService만 변경 및 추가된다
orderController는 req,res를 다루는 곳이니, body에 적힌 products를 받아야 한다
그러면 service에서는 products 배열 안에 있는 각 키와 값을 건드린다.
for 문 안에 products Id , quantity 쓰는 건 다 넣어야 한다
에러 핸들링까지도.
- product id 다른 경우 에러 핸들링
- 장바구니 수량보다 많은 제품 수량 구매 에러핸들링
- 장바구니 수량 구매 코드, 결제 후 장바구니 수량 변경/삭제
- orderDetails테이블에 정보 저장하는 코드
orderService.js 자세히 보면
for 문 -> 프론트에서 받아오는 products 배열에 담긴 숫자만큼
- product id 다른 경우 에러 핸들링
- 장바구니 수량보다 많은 제품 수량 구매 에러핸들링
- 장바구니 수량 구매 코드, 결제 후 장바구니 수량 변경/삭제
- orderDetails테이블에 정보 저장하는 코드
for 문에 await를 담게 되면, 계속
await 바로 위에 async가 있어야 한다는 에러가 난다.
for 문 있기 전까지는 상관 없던 에러.
그렇기에, promiseall을 위와 같이 활용해야 한다.
'Wecode - Project 3 (부트캠프) > Project 3 과정' 카테고리의 다른 글
Project 3- 마지막 standing meeting (0) | 2023.10.26 |
---|---|
Project 3 - API document postman으로 작성하기 [개념] (0) | 2023.10.25 |
Project 3 - [주문/결제 api] 에러 핸들링 코드 및 과정 (0) | 2023.10.24 |
Project 3 -[주문 api] unit test; test code 성공 (에러 핸들링 없이) (0) | 2023.10.22 |
토큰 담아 req.body 보내기 (0) | 2023.10.22 |