inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

데이터 수정에 관하여

해결된 질문

325

Haewoong Lee

작성한 질문수 12

0

수업에서는 product 테이블을 생성할 때 연관된 테이블의 데이터도 한번에 만들 수 있도록 구현하였습니다.

그렇다면 데이터 수정도 product의 mutation 요청으로 연관 테이블들의 데이터도 모두 수정할 수 있도록 구현해야 하나요?

이렇게 하려니 product 업데이트를 위해 입력해야 하는 데이터가 너무 많아지고 연관된 테이블의 데이터를 수정하는 경우에 create처럼 연관된 테이블의 컬럼의 데이터를 하나하나 다시 다 지정해줘야 하는 불편함도 있습니다.

이렇게 한방에 처리하는거 말고 일단 product update mutation에는 product의 본래 컬럼들만 수정할 수 있도록 처리하고 연관된 테이블의 데이터는 연관 테이블의 기본키로 해당 테이블들의 update mutation으로 처리해도 될까요? 일단은 연관된 테이블의 기본키를 product의 fetchProduct로 조회하고 찾은 키를 이용해서 연관 테이블의 데이터를 수정하는 방식입니다.

어떤 구조가 올바른 방식일까요?

javascript node.js express docker tdd rest-api nestjs

답변 1

0

노원두

안녕하세요! Haewoong님!

더 좋은 코드를 작성하기 위해 고민 많이 하셨네요!
좋은 개발자가 점점 되어가시는 것 같아 보기 좋아요!

문제 해결 방법으로는 크게 3가지 정도의 방법이 있을 것으로 보여지네요!

  1. 프론트엔드 화면에서 위치정보 수정하기, 태그 수정하기, 상품 수정하기 등으로 나누어서 버튼을 3개 만드신다면 updateProduct, updateTag, updateProductSaleslocation 등으로 나누시고, 각 버튼을 클릭하실 때, 클릭된 API를 요청하시는 방법이 있어요!(말씀하신 것 처럼 각각는 id를 기준으로 수정하시면 될 것 같아요!)

     

  2. 하지만, 프론트엔드 화면에서 수정하기 버튼 1개로 한번에 모두 수정하길 원하신다면 updateProduct에서 변경된 데이터를 수정하기 위한 Service에 각각 접근하셔서 처리하시는게 좋을 것 같아요!(약간 복잡해 지겠지만 가장 일반적이에요!)

     

  3. 마지막으로, 프론트엔드 화면에서 수정하기 버튼을 1개 만들고, 해당 버튼 클릭시 updateProduct, updateTag, updateProductSaleslocation 3번 API 요청하기 방식이 있는데, 이 방법은 가장 깔끔한 것 같으나, updateProduct, updateTag에는 성공했는데 갑자기 인터넷 등의 문제로 updateProductSsaleslocation에는 실패하여 최종데이터가 꼬이는 문제(트랜잭션 문제라고 합니다)가 존재하므로, 급하지 않다면 다른 방법이 더 좋을 것 같아요!

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

86

2

강의 전체 소스 코드를 받고싶습니다.

0

77

2

fontawesome 사용 문의

0

80

2

소스 코드 부탁드립니다~

0

87

2

깃 레포지터리 소스

0

87

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

74

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

89

3

강의 버전관련 문의입니다

0

104

2

Ubuntu 설치 관련

0

62

1

schema.gql 질문 드립니다.

0

51

1

서버 재실행시 Many to Many

0

102

3

input 관련 문의

0

90

2

Rest API 보다는 graphql이 주된 내용인데

0

134

2

강의 전체 소스코드 받을수있을까요?

0

156

1

도커볼륨 마운트 관련

0

127

2

findOne 타입스크립트오류

0

109

1

http => htrtps 호출 인증서 신뢰 오류

0

356

1

self-signed certificate in certificate chain 에러 발생

0

421

1

mongoose 설치 오류

0

143

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

285

2

08-06

0

180

3

구조랑 패턴 관련해서 질문

0

126

2

mydocker

0

129

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1