javascript - NestJs: Se till att din klass är dekorerad med en lämplig dekoratör
Jag använder graphql-request som en GraphQL-klient för att fråga ett headless CMS för att hämta saker, ändra och returnera till den ursprungliga förfrågan/frågan. Headless CMS är hostat separat, för information.
Jag har följande kod :
@Query(returns => BlogPost)
async test() {
const endpoint = 'https://contentxx.com/api/content/project-dev/graphql'
const graphQLClient = new GraphQLClient(endpoint, {
headers: {
authorization: 'Bearer xxxxxxx',
},
})
const query = gql`
{
findContentContent(id: "9f5dde89-7f9b-4b9c-8669-1f0425b2b55d") {
id
flatData {
body
slug
subtitle
title
}
}
}`
return await graphQLClient.request(query);
}
BlogPost är en modell som har typerna :
import { Field, ObjectType } from '@nestjs/graphql';
import { BaseModel } from './base.model';
import FlatDateType from '../resolvers/blogPost/types/flatDatatype.type';
@ObjectType()
export class BlogPost extends BaseModel {
@Field({ nullable: true })
id!: string;
@Field((type) => FlatDateType)
flatData: FlatDateType;
}
och FlatDateType har följande kod
export default class FlatDateType {
body: string;
slug: string;
subtitle: string;
title: string;
}
det kastar följande undantag :
Fel: Kan inte bestämma en GraphQL-utdatatyp för "flatData". Se till att din klass är dekorerad med en lämplig dekoratör.
Vad saknas här?
Svar #1
Hur ska din graphql-server förstå typen av FlatDataType när det inte skickas någon information om den till graphql-parsaren? Du måste lägga till graphql-dekoratorerna på den också. @ObjectType(), @Field(), etc.
Svar #2
FlatDataType är inte definierad som @ObjectType(), därför kan type-graphql (eller @nestjs/graphql) inte använda den som ett output i GraphQL.