Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

325
Visualizações
El filtro de excepción nestjs no se invoca cuando se lanza una excepción desde Custom ValidationPipe

Estoy tratando de validar la solicitud json en mi aplicación nestjs usando mi clase de tubería de validación personalizada "SchemaValidationPipe" que arroja BadRequestException. Mi filtro de excepción global no detecta la excepción lanzada desde la tubería de validación.

Si lanzo una excepción desde la clase del controlador, el filtro de excepción global puede detectar la excepción.

 @Injectable() export class SchemaValidationPipe implements PipeTransform<any> { constructor(private schema: any) {} transform(value: any, metadata: ArgumentMetadata) { const schemaValidator = new JsonValidator(this.schema); schemaValidator .validate(value) .then((data) => { if (data) { const { isValid, message } = data; if(!isValid) throw new BadRequestException( { status : '500', message : 'Validation failed' } ); } return Promise.resolve(value); }) .catch((err) => { throw new BadRequestException('Validation failed'); }); } }
 @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter<HttpException> { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); const request = ctx.getRequest(); const status = exception.getStatus(); response.status(status).json({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, }); } }
 const app = await NestFactory.create<NestExpressApplication>(AppModule); app.useGlobalFilters(new HttpExceptionFilter());
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puedo resolver el problema haciendo que el método de transformación sea asíncrono en la clase SchemaValidationPipe

 @Injectable() export class SchemaValidationPipe implements PipeTransform<any> { constructor(private schema: any) {} async transform(value: any, metadata: ArgumentMetadata) { const schemaValidator = new JsonValidator(this.schema); try { const { isValid, message } = await schemaValidator.validate(value); if(!isValid) throw new BadRequestException( 'Validation failed' ); } catch (err) { throw new BadRequestException('Validation failed'); } } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Parece que no devuelve el suministro del método de validate , por lo que se considera nulo. Esto significa que la promesa se ejecutará fuera del ciclo de vida de la solicitud enlazada y puede terminar generando un rechazo de suministro no controlado. Solo debe agregar return schemaValidator.validate...

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda