typescript - Graphql NestJS:未定义的类型错误。确保您提供显式类型

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

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

@ObjectType()
export class CommentsView {

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

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

}

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

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

@ObjectType()
export class CommentsView {

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

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

}

回答1

您很可能同时使用 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;
}

相似文章

最新文章