인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

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

10-08 N:M 등록 / 조회 API

10-08 숙제 정답 질문입니다.

24.10.13 05:48 작성

·

29

0

타입 문제라고 해서
dto랑 product.entity에 타입이 서로 각각

string[] , ProductTag[] 로 서로 다른 타입으로 설정 했더라구요 그래서 그냥 똑같이 ProductTag[] 으로 똑같이 설정 했더니 오류는 사라졌습니다 근데 이게 정답이 맞나요?

수정 전 dto
@Field(() => [String])
  productTags: string[];

product.entity.ts
 @Field(() => [ProductTag])
  productTags: ProductTag[];

수정후 dto
@Field(() => [ProductTag])
  productTags: ProductTag[];

답변 2

0

지성님의 프로필 이미지

2024. 10. 13. 06:47

import { Field, InputType } from '@nestjs/graphql';


@InputType()
export class ProductTagInput {
  @Field(() => String)
  name: string;
}

생각해보니

ProductTag는 object 타입이라
이렇게 dto 따로 만들어서 했습니다.

 

0

인프런 AI 인턴님의 프로필 이미지

2024. 10. 13. 05:51

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

타입스크립트에서 DTO(Data Transfer Object)와 엔티티(Entity)의 타입이 일관되지 않을 때 발생하는 오류를 해결하는 방법에 대한 질문이군요. DTO는 데이터를 네트워크로 전송하거나 외부로 노출할 때 사용되며, 엔티티는 데이터베이스 모델을 나타냅니다. 서로 다른 구조여서 같은 타입으로 맞춰줘야 합니다.

원래 dto에서는 productTagsstring[]으로, product.entity.ts에서는 ProductTag[]로 되어 있었던 것을 모두 ProductTag[]로 맞췄다는 것은 좋은 접근법입니다. 이 방법은 데이터 전송 시 타입 일관성을 유지하는 데 도움이 됩니다. 특히, GraphQL 스키마 정의에서 사용하는 클래스 타입 정보(@Field(() => [ProductTag]))를 맞추면 옳은 결과물을 얻을 수 있습니다.

만약 ProductTag가 별도의 객체나 클래스를 의미하는 경우라면, 이를 이용해 dto와 entity 간의 타입 일관성을 유지해야 합니다. 단순히 string 타입 배열로 유지하면, 향후 타입 검증 문제에서 복잡할 수 있으니 객체 타입으로 맞춰주는 것이 더 바람직합니다.

참고 링크

해결이 되셨기를 바랍니다. 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기