Zoeken op website

typescript - Hoe definieer je een GraphQL hosttype met een code-first veldresolver?


Ik gebruik NestJS met TypeORM om verbinding te maken met een MongoDB-server die draait op een Docker-image. Ik krijg deze fout wanneer ik probeer de applicatie te starten:

type-metadata.storage.js:263
            throw new cannot_determine_host_type_error_1.CannotDetermineHostTypeError(item.schemaName, objectTypeRef === null || objectTypeRef === void 0 ? void 0 : objectTypeRef.name);
                  ^
Error: Cannot determine a GraphQL host type  (CreateClassInput?) for the "students" field. Make sure your class is decorated with an appropriate decorator (e.g., @ObjectType()).
    at TypeMetadataStorageHost.compileExternalFieldResolverMetadata

De veldresolver is voor een veld genaamd students. Students is een array van StudentOutput-objecten. De ouder van students is gedefinieerd in een GraphQL @ObjectType()-klasse genaamd ClassOutput:

@ObjectType()
export class ClassOutput extends PartialType(UpdateClassInput) {
  @IsUUID('4', { each: true })
  @Field(() => String)
  class_id: string;

  @Field(() => [StudentOutput], { defaultValue: [] })
  students: StudentOutput[];

De resolver vermeldt correct ClassOutput als het bovenliggende GraphQL-type voor het veld students.

@ResolveField()
  students(@Parent() classGQLObject: ClassOutput): Promise<StudentOutput[]> {
    return this.studentsService.findStudentsByIDArray(classGQLObject);
  }

Het wijzigen van de decorator van ClassOutput van @ObjectType() naar @InputType() heeft de fout niet opgelost. Dit is hoe het `students-veld is gedefinieerd in de TypeORM-entityklasse:

@Entity('classes')
export class ClassesEntity {
  @ObjectIdColumn()
  _id: ObjectID;

  @PrimaryColumn()
  class_id: string;

  @Column({ type: 'array', default: [] })
  students: StudentOutput[];

Waarom kan GraphQL het hoofdtype van students niet vinden wanneer het hoofdtype is gedefinieerd in de resolverfunctie via students(@Parent() classGQLObject: ClassOutput), de gedecoreerde GraphQL-klasse ClassOutput en de entiteit?