Wecode - Project 3 (부트캠프)/Project 3 과정

Project 3: [주문 api] - if 에러 핸들링, transaction

JBS 12 2023. 10. 20. 08:41

에러 핸들링 

 

 

1.

2. 

2-1) 느낌표 위치 

2-2) 공백 주의

 

 

참고 

 

3. 


 

수량이 36개 남았을 때

남은 36개 다  넣었을 때

장바구니 0개가 됨

 

장바구니 carts 테이블에

원래 있던 

carts id 2 가 사라짐 --> 재고가 없기에 

36개 담았던 장바구니에서 36개를 샀으니 없어지는 것 

 

그리고 update가 아닌 delete 쿼리문이 쓰이는 걸 잘 확인 

 

4. 근데 장바구니에 0개라서 주문이 들어가면 안 되는데,

위의 주문 번호 order id = 34가 

orde 테이블에 생겼다는 것. 

주문이 되니까 

에러핸들링 해야함. 

orderService.js 에서 _ create order 함수에서 에러 핸들링 
카트에 없는 거 주뮨
카트 수량보다 많이 주문 

trasaction -> 주문 디테일 실패ㅙㅛ는데도
주문 테이블에 추가되거 잇엇음 

1) orders -> insert into
2) orders details -> insert into
3) carts -> update, delete

뒷단계 안 되면, 앞단계에서 한 정보가 데이터베이스로 
넘어가지 않게 

2번 주문 디테일 테이블에 저장에 안되는데

1번 순서에 주문 테이블엔 계속 저장돼서

order id 가 늘어나는 거 

 

그러면 2번 안될때 3번 넘어가늠것도 해야

transaction 

 

> 통신 실패할때에도 계속 order table에 쌓여서 orderid 숫자가 올라감 

(orderDetails 테이블의 order_Id의 첫 칼럼이 1번이 아니라, 4번인 이유) 

orders 테이블은 이만큼이나, orderDetails로 주문정보 저장(insert into 쿼리문 오류) 넘어가지 않아서 실패했는데도, 

계속 주문정보 저장됨 (insert into) 

 

 

이해하기 쉽게 코드로 보면 
1) orders table -> insert into 
2) order details table -> insert into 
순서이기에, 1) 은 됐다 이거라며 혼자 저장하는 거 --> 그래서 transaction이 필요한 이유! 

 

 

 

Project2: Middleware 활용

개요 🗣 하나의 API가 온전히 작동하기 위해서는 여러 단계를 거쳐야 합니다. 그 단계를 자유롭게 추가하거나 삭제하는 방법인 middleware에 대해 배워 봅시다. 학습 목표 middleware가 무엇인지 설명

pm-developer-justdoit.tistory.com

 

에러 핸들링 w/ [asyncwrap, next, ErrorHandler.js ]

동기 분께서 설명해주신 부분 1) async를 쓸 때 controller.js 에서 try, catch 지우고 errorHandler.js 사용 ( 에러 시 일로 감) 1-1) errorHandler.js 에서 next 사용 X 1-2) errorHandler.js 에서 next 사용 2) async를 안 쓸 때

pm-developer-justdoit.tistory.com

 

 

middlewware 공부 , errorhandler, async

에러 핸들링 2 [적용] 1. throw로 에러 던져보기 에러를 던지는 방법으로 throw 이는 개발자가 작성하는 모듈에서 발생가능한 에러 상황에서 던지게 되며 상위 계층이나 호출하는 곳에서 모듈의 에

pm-developer-justdoit.tistory.com

 

에러 핸들링 [개념] 1

일반적으로 Javascript 에서는 try-catch문과 throw를 이용하여 에러를 처리 에러 핸들링 미들웨어는 에러를 처리하기 위해 반복적으로 진행되는 코드를 모듈화하여 소프트웨어의 확장성과 생산성을

pm-developer-justdoit.tistory.com

 

에러 핸들링 2 [적용]

1. throw로 에러 던져보기 에러를 던지는 방법으로 throw 이는 개발자가 작성하는 모듈에서 발생가능한 에러 상황에서 던지게 되며 상위 계층이나 호출하는 곳에서 모듈의 에러를 감지할 수 있습니

pm-developer-justdoit.tistory.com

 

 

Project 3 - [주문/결제 api] 에러 핸들링 코드 및 과정

3가지 에러 1. // 에러 핸들링: carts 에 담기지 않은 product를 주문할 때 -> productId 라서 for()안에 들어가야 함 const isProductInCarts = await orderDao.isProductInCarts(userId, productId); // await: userId, productId,(orderDetai

pm-developer-justdoit.tistory.com