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.

Relaterade artiklar