해결된 질문
작성
·
282
0
수업에서는 product 테이블을 생성할 때 연관된 테이블의 데이터도 한번에 만들 수 있도록 구현하였습니다.
그렇다면 데이터 수정도 product의 mutation 요청으로 연관 테이블들의 데이터도 모두 수정할 수 있도록 구현해야 하나요?
이렇게 하려니 product 업데이트를 위해 입력해야 하는 데이터가 너무 많아지고 연관된 테이블의 데이터를 수정하는 경우에 create처럼 연관된 테이블의 컬럼의 데이터를 하나하나 다시 다 지정해줘야 하는 불편함도 있습니다.
이렇게 한방에 처리하는거 말고 일단 product update mutation에는 product의 본래 컬럼들만 수정할 수 있도록 처리하고 연관된 테이블의 데이터는 연관 테이블의 기본키로 해당 테이블들의 update mutation으로 처리해도 될까요? 일단은 연관된 테이블의 기본키를 product의 fetchProduct로 조회하고 찾은 키를 이용해서 연관 테이블의 데이터를 수정하는 방식입니다.
어떤 구조가 올바른 방식일까요?
답변 1
0
안녕하세요! Haewoong님!
더 좋은 코드를 작성하기 위해 고민 많이 하셨네요!
좋은 개발자가 점점 되어가시는 것 같아 보기 좋아요!
문제 해결 방법으로는 크게 3가지 정도의 방법이 있을 것으로 보여지네요!
프론트엔드 화면에서 위치정보 수정하기, 태그 수정하기, 상품 수정하기 등으로 나누어서 버튼을 3개 만드신다면 updateProduct, updateTag, updateProductSaleslocation 등으로 나누시고, 각 버튼을 클릭하실 때, 클릭된 API를 요청하시는 방법이 있어요!(말씀하신 것 처럼 각각는 id를 기준으로 수정하시면 될 것 같아요!)
하지만, 프론트엔드 화면에서 수정하기 버튼 1개로 한번에 모두 수정하길 원하신다면 updateProduct에서 변경된 데이터를 수정하기 위한 Service에 각각 접근하셔서 처리하시는게 좋을 것 같아요!(약간 복잡해 지겠지만 가장 일반적이에요!)
마지막으로, 프론트엔드 화면에서 수정하기 버튼을 1개 만들고, 해당 버튼 클릭시 updateProduct, updateTag, updateProductSaleslocation 3번 API 요청하기 방식이 있는데, 이 방법은 가장 깔끔한 것 같으나, updateProduct, updateTag에는 성공했는데 갑자기 인터넷 등의 문제로 updateProductSsaleslocation에는 실패하여 최종데이터가 꼬이는 문제(트랜잭션 문제라고 합니다)가 존재하므로, 급하지 않다면 다른 방법이 더 좋을 것 같아요!