【发布时间】:2020-05-27 21:33:21
【问题描述】:
我想使用 NestJs 创建一个 GraphQL API。据我了解,我不会再为无效请求抛出 HTTP 异常。因此,我认为我必须创建自己的“错误代码”,然后才能将其发回给客户。所以给出这个基本的例子
@ObjectType()
export class ErrorResponse {
@Field()
message: string;
}
我有一个服务函数通过用户 ID 返回用户,并且我扩展了返回类型以在请求无效时返回错误对象。
public async getUserById(id: number): Promise<ErrorResponse | User> {
const user: User = await this.usersRepository.findOne(id);
if (!user) {
const errorResponse: ErrorResponse = new ErrorResponse();
errorResponse.message = `User with ID ${id} does not exist`;
return errorResponse;
}
return user;
}
解析器最初类似于
@Query(() => User)
public async user(@Args('id') id: number): Promise<ErrorResponse | User> {
return this.usersService.getUserById(id);
}
但如上所述,如果id 不存在,也可以返回ErrorResponse。如何设计 Query 装饰器以提供多种返回类型?
@Query(() => ErrorResponse | User)
不会成功并显示此错误
算术运算的左边必须是'any'类型, 'number'、'bigint' 或枚举类型.ts(2362)
【问题讨论】:
标签: graphql nestjs typegraphql