У меня проблема с написанием настраиваемого HTTP-ответа из фильтров исключений nestjs
Я использую nest fastify one (не экспресс)
Я создаю настраиваемые фильтры исключений, которые перехватывают UserNotFoundException следующим образом:
@Catch(UserNotFoundException)
export class UserNotFoundExceptionFilter implements ExceptionFilter {
catch(exception: UserNotFoundException, host: ArgumentsHost) {
const errorResponse = new ErrorResponse<string[]>();
const response = host.switchToHttp().getResponse();
errorResponse.message = 'unauthorized exception'
errorResponse.errors = [
'invalid username or pass'
];
response.status(401).json(errorResponse)
}
}
я продолжаю получать response.status (...). json () не является функцией.
[Nest] 5400 - 05/17/2020, 00:27:26 [ExceptionsHandler] response.status(...).json is not a function +82263ms
TypeError: response.status(...).json is not a function
Я знаю, что мне нужно было указать тип этого ответа для какого-то типа писателя ответов (например, ответ от экспресс).
Я пытаюсь импортировать этот объект Response из экспресс-версии и обновить тип переменной response до Response (express), как показано ниже:
import {Response} from 'express';
const response = host.switchToHttp().getResponse<Response>();
и все работает без сбоев.
Но я не хочу добавлять в свое приложение какие-то экспресс-функции, я просто хочу использовать nestjs fastify. Вы, ребята, знаете какой-нибудь класс, который может заменить этот объект Response из express? Или, если у вас есть другой более умный способ решить эту проблему, это также поможет
спасибо всем