我正在尝试使用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 感谢您的帮助!