Я хочу создать GraphQL API с помощью Nest Js. Насколько я понял, я больше не буду выдавать исключения HTTP для недействительных запросов. Поэтому я думаю, что должен создать свои собственные "коды ошибок", которые я могу отправить обратно клиенту. Поэтому, учитывая этот базовый c пример
@ObjectType()
export class ErrorResponse {
@Field()
message: string;
}
, у меня есть сервисная функция для возврата пользователя по его идентификатору, и я расширил тип возвращаемого значения для возврата объекта ошибки, если запрос был недействительным.
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);
}
, но, как упоминалось выше, также можно вернуть ErrorResponse
, если id
не существует. Как я могу создать декоратор запросов для обеспечения нескольких типов возвращаемых данных?
@Query(() => ErrorResponse | User)
не справится с задачей и обнаружится с этой ошибкой
Левая часть arithmeti c операция должна иметь тип 'any', 'number', 'bigint' или enum type.ts (2362)