Validator para validar RUT en NestJS
1import {2 ValidationOptions,3 ValidatorConstraint,4 ValidatorConstraintInterface,5 registerDecorator,6} from "class-validator";7
8@ValidatorConstraint({ name: "RutValidator", async: false })9class RutValidator implements ValidatorConstraintInterface {10 validate(value: string): boolean {11 if (!value || !value.match(/^[0-9]+[-]{1}[0-9kK]{1}$/)) {12 return false;13 }14
15 return true;16 }17 defaultMessage(): string {18 return `$property must be a valid RUT (e.g. 12345678-9)`;19 }20}21export function IsRut(validationOptions?: ValidationOptions) {22 return (object: unknown, propertyName: string) => {23 registerDecorator({24 name: "isRut",25 target: object.constructor,26 propertyName: propertyName,27 options: validationOptions,28 validator: RutValidator,29 });30 };31}
Modo de uso:
1import { IsRut } from "./rut.validator";2import { Controller, Get, Header, Query } from "@nestjs/common";3import { Validate } from "class-validator";4
5export class TestRequestDto {6 @IsRut()7 clientCode: string;8}9
10@Controller()11export class TestController {12 @Get("test-rut")13 @Header("content-type", "application/json")14 testRut(15 @Query()16 rut: TestRequestDto,17 ): any {18 return rut;19 }20}
resultado:
curl http://localhost:8080/test-rut?rut=invalid_rut
{ "message": "rut must be a valid RUT (e.g. 12345678-9)", "error": "Bad Request", "statusCode": 400}