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.
