首页 > 解决方案 > NestJs:确保你的班级用合适的装饰器装饰

问题描述

graphql-request用作 GraphQL 客户端来查询无头 CMS 以获取内容、修改并返回到原始请求/查询。无头 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);
  }

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;
}

FlatDateType具有以下代码

export default class FlatDateType {
  body: string;
  slug: string;
  subtitle: string;
  title: string;
}

它抛出以下异常:

错误:无法确定“flatData”的 GraphQL 输出类型。确保您的班级使用合适的装饰器进行装饰。

这里缺少什么?

标签: javascriptnode.jstypescriptgraphqlnestjs

解决方案


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


推荐阅读