node.js - Hvorfor får jeg feilen "kan ikke bestemme GraphQL-utgangstype"?


Jeg prøver å lage en enkel applikasjon med Nest.js, GraphQL og MongoDB. Jeg ønsket å bruke TypeORM og TypeGraphql for å generere mitt skjema og lage en forbindelse med localhost-databasen, men jeg kan ikke starte serveren min med nest start fordi jeg får denne feilen:

UnhandledPromiseRejectionWarning: Feil: Kan ikke bestemme GraphQL-utgangstype for getArticles

Jeg har ingen anelse om hvorfor jeg får denne feilen. Klassen min ArticleEntity har ingen ikke-primære typer, så det burde ikke være noe problem. Jeg prøvde å fjerne () => ID fra @Field()-dekoratøren til feltet _id i ArticleEntity-klassen, men det hjalp ikke.

ArtikkelLøser

@Resolver(() => ArticleEntity)
export class ArticlesResolver {
  constructor(
    private readonly articlesService: ArticlesService) {}

  @Query(() => String)
  async hello(): Promise<string> {
    return 'Hello world';
  }

  @Query(() => [ArticleEntity])
  async getArticles(): Promise<ArticleEntity[]> {
    return await this.articlesService.findAll();
  }

}

ArtikkelTjeneste

@Injectable()
export class ArticlesService {
  constructor(
    @InjectRepository(ArticleEntity)
    private readonly articleRepository: MongoRepository<ArticleEntity>,
  ) {}

  async findAll(): Promise<ArticleEntity[]> {
    return await this.articleRepository.find();
  }
}

ArtikkelEnhet

@Entity()
export class ArticleEntity {
  @Field(() => ID)
  @ObjectIdColumn()
  _id: string;

  @Field()
  @Column()
  title: string;

  @Field()
  @Column()
  description: string;
}

ArticleDTO

@InputType()
export class CreateArticleDTO {
  @Field()
  readonly title: string;

  @Field()
  readonly description: string;
}

Hvis du trenger noe annet, kommenter

Svar #1

ArticleEntity bør dekoreres med @ObjectType-dekortoren som vist i dokumentasjonen https://typegraphql.com/docs/types-and-fields.html.

@Entity()
@ObjectType()
export class ArticleEntity {
  ...
}

Svar #2

For alle som får denne feilen og bruker enums, kan det hende du mangler et kall til registerEnumType.

Relaterte artikler