When creating a decorator using class-validator how do I set a default error message?

38 Views Asked by At

If the user using my decorator does not define "message" in validationOptions my constraint is reported with an empty string ''.

export function IsISO6391(validationOptions?: ValidationOptions) {
  return function (object: Object, propertyName: string) {
    registerDecorator({
      name: 'IsISO6391',
      target: object.constructor,
      propertyName: propertyName,
      constraints: [],
      options: validationOptions,
      validator: {
        validate,
      }
    });
  };
}

How do I set a default error message?

1

There are 1 best solutions below

0
Tiago Bértolo On

Found a way to do it:

export function IsISO6391(validationOptions?: ValidationOptions) {
  return function (object: Object, propertyName: string) {
    registerDecorator({
      name: 'IsISO6391',
      target: object.constructor,
      propertyName: propertyName,
      constraints: [],
      options: validationOptions,
      validator: {
        validate,
        defaultMessage(args: ValidationArguments) {
          return `${args.property} is not a valid ISO639-1 language code`;
        },
      },
    });
  };
}