3

我正在尝试使用nest.js 和@nestjs/graphql 模块做一个api。我从这里开始使用示例样板。我在架构中添加/更新了这个:

type GraphQLError {
    message: String
    errorCode: Int
    type: String
}

union MutationResult = Cat | GraphQLError

type Mutation {
  createCat(name: String, age: Int): MutationResult
  deleteCat(id: ID): MutationResult
}

我尝试在 CatsResolvers 类中定义 __resolveType 函数:

@Resolver('Cat')
export class CatsResolvers {
  constructor(private readonly catsService: CatsService) {}
  __resolveType(obj, context, info): string{
    return obj.errorCode ? 'GraphQLError' : 'Cat';
  }

  @Mutation('createCat')
  async create(obj, args: Cat, context, info): Promise<Cat | GraphQLError> {
    const createdCat = await this.catsService.create(args);
    pubsub.publish('catCreated', { catCreated: createdCat });
    return createdCat;
  }

}

我尝试使用以下请求插入猫:

mutation insertCat {
  createCat(name:"kitty", age: 1) {
    ... on Cat {
      name
      age,
      id
    }
    ... on GraphQLError {
      errorCode
      message,
       type
    }
  }
}

我有错误:抽象类型 MutationResult 必须在运行时解析为字段 Mutation.createCat 的对象类型,其值为 \"[object Object]\",收到 \"undefined\"。MutationResult 类型应该提供一个“resolveType”函数,或者每个可能的类型都应该提供一个“isTypeOf”函数。

我不知道该怎么办。@nestjs/graphql 中似乎没有实现 resolveType 感谢您的帮助!

4

0 回答 0