NestJs:确保您的类使用适当的装饰器进行装饰

Gam*_*mer 4 javascript node.js typescript graphql nestjs

我使用graphql-requestGraphQL 客户端来查询无头 CMS 以获取内容、修改并返回原始请求/查询。headless cms 单独托管,仅供参考。

我有以下代码:

@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);
  }
Run Code Online (Sandbox Code Playgroud)

BlogPost是一个具有以下类型的模型:

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;
}
Run Code Online (Sandbox Code Playgroud)

FlatDateType有以下代码

export default class FlatDateType {
  body: string;
  slug: string;
  subtitle: string;
  title: string;
}
Run Code Online (Sandbox Code Playgroud)

它抛出以下异常:

错误:无法确定“flatData”的 GraphQL 输出类型。确保你的类是用适当的装饰器装饰的。

这里缺少什么?

Jay*_*iel 8

FlatDataType当没有有关它的信息传递给 graphql 解析器时,您的 graphql 服务器应该如何理解类型?您还需要向其中添加 graphql 装饰器。@ObjectType()@Field(), ETC。