import { InputType, ObjectType } from 'type-graphql';
@InputType()
@ObjectType()
class Episode {
// class fields and methods
}
- 위 코드에 Episode 클래스는 동시에 @InputType()과 @ObjectType() 데코레이터가 적용되어 있다.
- 이 경우, 자동으로 생성되는 SDL(Schema Definition Language)에서 이름 충돌이 발생할 수 있다.
type Episode {
# fields defined by @ObjectType()
}
input Episode {
# fields defined by @InputType()
}
- SDL로 변환하면 자동으로 클래스 이름으로 type 또는 input 등의 타입들로 변환하는데, 이름이 고유해야 한다.
- 같은 이름이 존재하기 때문에 에러가 발생하는 것이다.
해결 방법
import { InputType, ObjectType } from 'type-graphql';
@InputType('EpisodeInput', { isAbstract: true })
@ObjectType()
class Episode {
// class fields and methods
}
- @InputType에 중복되지 않는 이름으로 지정해 주면 된다.
- { isAbstract: true } 추가
- 클래스가 GraphQL 스키마에서 타입으로 직접 정의되지 않도록 하기 위한 설정
'Frontend > Nest.js' 카테고리의 다른 글
InputTypes and ArgumentTypes (0) | 2024.06.21 |
---|---|
type-graphql의 isAbstract 옵션 (0) | 2024.06.21 |
NestJS : DTO 데이터 전송 객체 (Data Transfer Object) (0) | 2023.01.10 |
NestJS : 예외처리 (0) | 2023.01.10 |
NestJS : 형변환 (0) | 2023.01.09 |