PROJECT/[ 도서쇼핑몰 ]

주문 API 구현

Lim임 2025. 10. 25. 20:22

마지막 기능입니다

지금까지의 기능만드는 과정을 살펴보면

1. 설계함

2. 설계보고 (+설계 수정하면서) 프레임 만듦

3. 연결만 해보고 StatusCode 200 띄워보고

4. 기능 만듦 + db 만들기(테이블짜고 fk 연결 고민하고 등등,,)

5. 기능만들고 db연결함 sql문으로 작성함

6. 리팩토링

 

 

 

fk 제약조건 연결하는 방법

 

fk_적용할테이블_가져올테이블_이름

 

fk_orders(T)_users(T)_id(V)

 

Bookshop 스키마의 users 테이블에서 

 

 

orders의 user_id값을

users의 id값에서 reference한다.

잘됩니다 ^^

 

 

 

 

orders

 

orderedBooks

delivery

 

--

방금 insert한 데이터 pk 가져오는 방법

1. last_insert_id()

SELECT last_insert_id();

=> 하나의 세션에서만 insert를 잘 알려줌 동시에 여러개의 insert가 일어나면 힘들어함!!

2. max()

SELECT max(id) FROM Bookshop.orderedBook;

 

 

 

 

 

 

 

🚀트러블슈팅

테이블끼리 foreign키 막 연결하고 난 뒤에 값을 넣으려니 안됐다

 

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`Bookshop`.`orderedBook`, CONSTRAINT `fk_orderedBook_orders_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

 

역시나 참조하려는 테이블에 해당 값이 없어서 그랬따~

-------

 

 Cannot destructure property 'delivery' of 'req.body' as it is undefined.

 

json관련 어쩌구 솰라솰라,,해서 다시보니까

세상에 텍스트형태였다

json 포맷으로 호다닥 돌려주었어요

잘됩니다 ^^

 

---

 

 

rror: Column 'total_quantity' cannot be null
    at PromiseConnection.query (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/mysql2/lib/promise/connection.js:29:22)
    at order (file:///Users/seoin/Desktop/KDT/BOOK-SHOP/controller/OrderController.js:19:40)
    at Layer.handleRequest (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/layer.js:152:17)
    at next (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/route.js:157:13)
    at validate (file:///Users/seoin/Desktop/KDT/BOOK-SHOP/routes/orders.js:16:5)
    at Layer.handleRequest (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/layer.js:152:17)
    at next (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/route.js:157:13)
    at Route.dispatch (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/route.js:117:3)
    at handle (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/index.js:435:11)
    at Layer.handleRequest (/Users/seoin/Desktop/KDT/BOOK-SHOP/node_modules/router/lib/layer.js:152:17) {
  code: 'ER_BAD_NULL_ERROR',
  errno: 1048,
  sql: "INSERT INTO orders (book_title,total_quantity,total_price,user_id,delivery_id) VALUES ('콩쥐팥쥐',NULL,NULL,1,3)",
  sqlState: '23000',
  sqlMessage: "Column 'total_quantity' cannot be null"
}

 

뇌를 뺴고있었는지,,,

firstQuantity라고 했다,,

totalQuantiry인데,,,

잘되네요~^^