본문 바로가기
개발 일지

S2: Cmarket-database

by StelthPark 2021. 10. 22.

Express-Routes를 위한 연결

 

# Server API를 보면 쿼리(?)가 아닌 url-path를 확인한다.

# POST /users/:userId/orders 와 GET /users/:userId/orders 로 이루어져 있으므로 /userId/orders로 명시한다.

# 해당 url-path가 작동할 컨트롤러를 구현한다.

 

controllers 구현

# 각 메소드에서 요청할 파라미터들을 각각의 처리할 models로 보내게위해 인자로 넣는다.

# 들어올 파라미터가 없으면 status로 실패코드를 보내게된다.

# error또는 result는 콜백으로 model에서 처리한후 다시 결과가 들어와 처리된다.

 

models 구현

GET 구현

# userId를 인자로 받아 orders.user_id와 일치하는 것들중 모든 주문내역 이므로 item에 대한 내용,주문내역,주문item등을뽑아와야하므로 제일 안쪽인 item,order_items,orders를 서로 연결하는 key(pk=fk)로 ON을 처리하여 SELECT한다.

 

POST 구현

# Post에서 필터할 4개의 인자를 받는다.

# 우선 특정 user가 접수한 주문목록이 쌓이는 orders에 테이블을 추가하기 위해 user_id와 total_price를 받아온 인자로 INSERT INTO 한다.

# 처리가 ERROR날시 콜백으로 (ERROR,NULL)을 보내 종료시켜버린다.

# 처리가 성공일시 orders와 연결된 order_items에도 order_id에 금방 생성한 orders의 PK ID가 들어가고 ItemId와 quantity가 쌓여야한다.

# VALUE에 ? 를 주어 params로 변수를 만들어 통째로 bulk table 할수 있도록 만든다.

# params로 들어올 orders를 풀기위해 map을 써서 params를 2차원배열로 만들어준다.

# 위에서 성공적으로 처리된 result의 insertId를 쓰면 바로 orders의 PK ID가 들어가게 된다.

# params가 2차원배열로 여러값이 들어가 있을시 [params]로 배열에 넣는다.

 

 

 

 

[참조]

INSERT INTO의 생성된 테이블의 Id(PK) 바로 쓰는 result.insertId와 params로 여러레코드 삽입

 

Node.js MySQL Insert Into

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

 

 

 

 

 

 

 

댓글