@Ne7Le4Der

Почему не работает UseFilters?

gateway.ts:
@Get('test-exception')
    @HttpCode(HttpStatus.OK)
    @UseFilters(RpcExceptionFilter)
    async testException() {
        try {
            return await lastValueFrom(this.testRMQ.send('test', {}));
        } catch (error) {
            console.log(error);
        }
    }


rpc-exception-filter.ts:
import { Catch, ExceptionFilter } from "@nestjs/common";
import { RpcException } from "@nestjs/microservices";

@Catch(RpcException)
export class RpcExceptionFilter implements ExceptionFilter {
    catch(exception: RpcException) {
        const error = exception.getError();

        return {staus: 500, error: 'RpcFilterError'};
    }
}


testRMQ.ts:
@MessagePattern('test')
    updateInstrumentList(@Payload() payload: void, @Ctx() context: RmqContext) {
        throw new RpcException('Invalid credentials');
    }


Ожидаемый вывод:
{ status: 500, message: 'RpcFilterError' }

Получаемый вывод:
{ status: 'error', message: 'Invalid credentials' }


Почему не отрабатывает фильтр?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@Ne7Le4Der Автор вопроса
Потому что
return await lastValueFrom(this.testRMQ.send('test', {}));

Почему-то возвращает не объект класса RpcException. Почему - ни малейшего понятия, меняем
@Catch(RpcException)
на @Catch()
и всё работает
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы