inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

11-로그인 프로세스 이해

선생님 10-8 숙제 질문있습니다.

179

반가우면반갑다고해

작성한 질문수 142

0

빨간줄 에러 그어져있는거를 읽고 ProductTag타입과

 create-product.input.ts에서 선언한

  @Field(() => [String])
  productTags: string[];

이부분이 문제라고 판단을 했습니다.

더 깊게 파고들어가보면 선생님이 제시하신 숙제에대해서 먼저 살펴봐야할것 같다는 생각이 들었습니다.

 

 

1. 아래 코드에서 ...product의 타입은 Product로 선언되어있습니다.

    // 숙제-1)왜 아래 에러가 발생하는지 고민해보기
    // 숙제-2)아래 에러 고쳐보기
    const result = this.productsRepository.save({
      ...product,
      ...updateProductInput,
    });
  1. Product의 타입중 아래와같이 ProductTag[]를 필수로선언한게 있는데 이게 업데이트프로덕션인풋 타입과 충돌(?)이 일어나서 에러가 발생하는것 같았습니다.

  productTags: ProductTag[];
  1. 왜냐하면 업데이트프로덕션인풋 타입은 아래처럼 모든 타입을 ?로 바꿔주고있기때문입니다.

PartialType(CreateProductInput)
  1. create-product.input.ts에서 선언한 타입을 아래와 같이 바꿔주어 해결했습니다.


    ProductTag의 {} 객체안에들어가는 값까지 다 ?로 바꿨습니다.

 @Field(() => [String])
  productTags: DeepPartial<ProductTag[]>;


여기까지가 제가 풀이해본건데요..

솔직히 맞는지 모르겠어요

요약하자면 ,updateProductInput이랑 product 타입이 충돌일어나서 그런거다. 라고 이해하고있는데 맞을까요?

javascript node.js docker rest-api nestjs

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

질문하신 부분에 대해 답변 드리겠습니다. 네, 맞습니다. 귀하의 진단대로, updateProductInputProduct 타입 간에 발생하는 충돌이 문제의 원인으로 보입니다. Product 타입에서 productTagsProductTag[]로 필수 선언했고, updateProductInput에서는 CreateProductInput 타입을 PartialType으로 사용하여 모든 속성을 선택적(? 표시)으로 만들었습니다. 따라서, productTags의 경우도 선택적으로 처리되어 ProductTag[]와 타입이 일치하지 않게 되어 충돌이 발생했습니다.

create-product.input.ts에서 productTags 타입을 DeepPartial<ProductTag[]>로 변경하여 문제를 해결한 점은 올바른 접근 방식입니다. DeepPartial을 사용하면 ProductTag 객체 내의 모든 속성이 선택적이 되어 PartialType(CreateProductInput)을 사용할 때 발생하는 타입 충돌 문제를 해결할 수 있습니다.

요약하자면, updateProductInputproduct 타입 간의 충돌이 문제의 원인이 맞으며, 속성을 선택적으로 처리함으로써 이 문제를 올바르게 해결하셨습니다.

추가적으로 궁금한 점이 있다면 언제든지 질문해 주세요.

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

0

82

2

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

0

75

2

fontawesome 사용 문의

0

75

2

소스 코드 부탁드립니다~

0

84

2

깃 레포지터리 소스

0

80

2

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

0

72

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

84

3

강의 버전관련 문의입니다

0

101

2

Ubuntu 설치 관련

0

60

1

schema.gql 질문 드립니다.

0

49

1

서버 재실행시 Many to Many

0

100

3

input 관련 문의

0

89

2

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

0

130

2

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

0

154

1

도커볼륨 마운트 관련

0

126

2

findOne 타입스크립트오류

0

108

1

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

0

348

1

self-signed certificate in certificate chain 에러 발생

0

410

1

mongoose 설치 오류

0

141

1

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

0

280

2

08-06

0

177

3

구조랑 패턴 관련해서 질문

0

123

2

mydocker

0

127

2

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

0

155

1