Crear tus propias validaciones de datos será muy importante para segurizar tu aplicación y evitar errores inesperados.
Cómo crear custom PIPES
Crea tu propio PIPE para implementar lógica custom de validación de datos.
1. Crea tu primer Pipe
Con el CLI de NestJS autogenera un nuevo pipe con el comando nest generate pipe <pipe-name> o en su forma corta nest g p <pipe-name>.
Por defecto, verás un código como el siguiente.
Implementa aquí tu propia lógica de transformación y validación de datos. Ten en cuenta que si los datos no son válidos, puedes arrojar excepciones para informarle al front-end que los datos son erróneos.
import{ArgumentMetadata,Injectable,PipeTransform,BadRequestException}from'@nestjs/common';@Injectable()exportclassParseIntPipeimplementsPipeTransform{transform(value:string, metadata:ArgumentMetadata){const finalValue =parseInt(value,10);if(isNaN(finalValue)){thrownewBadRequestException(`${value} no es un número.`);}return finalValue;}}
3. Importa y utiliza el Pipe
Finalmente, implementa tu custom PIPE en el controlador.
Puedes desarrollar la lógica para validar y transformar los datos que más se adecue a tus necesidades. Es fundamental no permitir el ingreso de datos erróneos a tus controladores. Por eso, los pipes son una capa previa a los controladores para realizar esta validación.
Generar un pipe con nest g pi common/parse-int
// src/common/parse-int.pipe.tsimport{ArgumentMetadata,Injectable,PipeTransform,BadRequestException,}from'@nestjs/common';@Injectable()exportclassParseIntPipeimplementsPipeTransform{transform(value:string, metadata:ArgumentMetadata){const val =parseInt(value,10);if(isNaN(val)){thrownewBadRequestException(`${value} is not an number`);}return val;}}