작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
61
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
import { Field, InputType } from '@nestjs/graphql';
@InputType()
export class ProductTagInput {
@Field(() => String)
name: string;
}
생각해보니
ProductTag는 object 타입이라
이렇게 dto 따로 만들어서 했습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 지성님.
타입스크립트에서 DTO(Data Transfer Object)와 엔티티(Entity)의 타입이 일관되지 않을 때 발생하는 오류를 해결하는 방법에 대한 질문이군요. DTO는 데이터를 네트워크로 전송하거나 외부로 노출할 때 사용되며, 엔티티는 데이터베이스 모델을 나타냅니다. 서로 다른 구조여서 같은 타입으로 맞춰줘야 합니다.
원래 dto
에서는 productTags
가 string[]
으로, product.entity.ts
에서는 ProductTag[]
로 되어 있었던 것을 모두 ProductTag[]
로 맞췄다는 것은 좋은 접근법입니다. 이 방법은 데이터 전송 시 타입 일관성을 유지하는 데 도움이 됩니다. 특히, GraphQL 스키마 정의에서 사용하는 클래스 타입 정보(@Field(() => [ProductTag])
)를 맞추면 옳은 결과물을 얻을 수 있습니다.
만약 ProductTag
가 별도의 객체나 클래스를 의미하는 경우라면, 이를 이용해 dto와 entity 간의 타입 일관성을 유지해야 합니다. 단순히 string 타입 배열로 유지하면, 향후 타입 검증 문제에서 복잡할 수 있으니 객체 타입으로 맞춰주는 것이 더 바람직합니다.
해결이 되셨기를 바랍니다. 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.