Graphql NestJS:未定义类型错误。确保您提供明确的类型

问题描述 投票:0回答:2

可以通过以下类型定义看到异常。

UnhandledPromiseRejectionWarning:错误:未定义类型错误。确保您为“CommentsView”的“行”提供显式类型

@ObjectType()
export class CommentsView {

    
 @Field({ nullable: true })
 count: number;

 @Field({ nullable: true })
 rows: Comment[];

}

因此,在字段上定义了类型,如下所示,但它引发了新的错误

(节点:14964)UnhandledPromiseRejectionWarning:错误:架构必须包含唯一命名的类型,但包含多个名为“Comment”的类型。

@ObjectType()
export class CommentsView {

    
 @Field({ nullable: true })
 count: number;

 @Field(() => [Comment])
 rows: Comment[];

}
typescript graphql nestjs typegraphql
2个回答
4
投票

您很可能同时使用

Comment
类作为输入和对象类型,这在 GraphQL 中不受支持。

一种解决方案是提供不同的输入类型名称:

@ObjectType()
@InputType("CommentInput")
export class Comment {
  ...
}

另一个方法是为输入和对象类型提供不同的子类:

@ObjectType({ isAbstract: true })
@InputType({ isAbstract: true })
export class Comment {
  ...
}

@ObjectType()
export class CommentObject extends Comment {}

@InputType()
export class CommentInput extends Comment {}

@ObjectType()
export class CommentsView {
  ...

  @Field(CommentObject, { nullable: true })
  rows: CommentObject[];
}

// somewhere else where you used the Comment class as an input
...
@InputType()
export class CommentUserInput {
  @Field(() => CommentInput)
  comment: CommentInput;
}

0
投票
@ObjectType()
export class CommentsView {

    
 @Field(() => Int, { nullable: true })
 count: number;

 @Field(() =>[Comment], { nullable: true })
 rows: Comment[];
}

试试这个

© www.soinside.com 2019 - 2024. All rights reserved.