inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

graphQL 에러 문제

해결된 질문

567

작성자 없음

작성한 질문수 0

0

안녕하세요. 그래프큐엘 관련 에러가 해결이 되지 않아 질문드립니다.

아래와 같은 Member, Dibs 엔티티가 있습니다.

@Entity()
@ObjectType()
export class Dibs {
    @ManyToOne(() => Member, { primary: true })
    @Field(() => Member)
    member: Member;

    @ManyToOne(() => Campground, { primary: true })
    @Field(() => Campground)
    campground: Campground;

    @DeleteDateColumn()
    deletedAt: Date;
}
@Entity()
@ObjectType()
// @InputType()
export class Member {
    @PrimaryColumn()
    @Field(() => String)
    memberId: string;

    @Column({ nullable: false })
    @Field(() => String)
    password: string;

    @Column({ nullable: false })
    @Field(() => String)
    nickname: string;

    @Column({ nullable: false })
    @Field(() => String)
    email: string;

    @Column({ nullable: false })
    @Field(() => String)
    name: string;

    @Column({ nullable: false })
    @Field(() => String)
    phoneNumber: string;
}

그런데 Member 클래스를 다른 엔티티 클래스에서 외래키로 지정해주면 오류가 발생합니다.
코드를 보시면 Dibs 엔티티에서 Member를 @Field(() => Member) 데코레이터로 지정하여 그래프큐엘 필드로 지정해주는데 아래의 오류가 발생합니다.

Error: Cannot determine a GraphQL input type ("Member") for the "member". Make sure your class is decorated with an appropriate decorator.

인터넷에 찾아보니 Member 클래스에 InputType 데코레이터를 지정해주라고 돼있는데 강의 예제코드에선 특정 클래스를 다른 엔티티에서 외래키로 활용할 때 그 클래스에 ObjectType만 지정하고 InputType은 지정해주지 않아도 잘 작동하였습니다.

Member클래스 뿐만 아니라 외래키로 활용되는 모든 클래스에서 오류가 발생하고 있습니다. 해당 클래스들에 InputType을 지정하면 오류가 사라지긴 하나 아래와 같은 다른 오류가 또 발생합니다.

Error: Schema must contain uniquely named types but contains multiple types named "Member".

 

이틀 동안 여러가지 찾아보고 해결을 시도해봤지만 잘 안되네요. 도움 부탁드립니다.

node.js nestjs graphql

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

해당 오류는 Member 클래스가 GraphQL input type으로 인식되지 않아 발생하는 것 같습니다. Member 클래스를 다른 엔티티 클래스에서 외래키로 지정할 때 InputType 데코레이터를 추가해주어야 하는데, 해당 클래스를 ObjectType으로만 지정해준 경우에는 오류가 발생하지 않을 수 있습니다.

하지만 이 경우에는 Member 클래스가 Input 타입이 아닌데 Dibs 클래스에서 Member 필드를 @Field(() => Member) 로 지정해줌으로써 오류가 발생한 것 같습니다. 따라서 Member 클래스에 @InputType 데코레이터를 추가해줌으로써 해당 오류를 해결할 수 있을 것 같습니다.

하지만 추가로 “Multiple types named “Member”” 오류가 발생하는 것으로 봐서, 같은 이름의 타입이 여러 개 있어서 발생하고 있는 것 같습니다. 이 경우에는 각 타입의 이름을 다르게 설정해주어야 합니다.

이와 같은 방식으로 해결이 되지 않는 경우, schema의 정의를 확인해봐야 할 것 같습니다. schema 정의가 제대로 되어있지 않으면 이와 같은 오류가 발생할 수 있습니다.

도움이 되었길 바랍니다. 감사합니다.

그래프 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