class-validator 验证联合字符串 |数字

class-validator validate union string | number

我有一个简单的 DTO class 用于验证

class SearchIssuerDto {
    search: string | number;
}

验证搜索参数可以接受字符串或数字的正确方法是什么?

您可以为此创建一个自定义验证器:

@ValidatorConstraint({ name: 'string-or-number', async: false })
export class IsNumberOrString implements ValidatorConstraintInterface {
  validate(text: any, args: ValidationArguments) {
    return typeof text === 'number' || typeof text === 'string';
  }

  defaultMessage(args: ValidationArguments) {
    return '($value) must be number or string';
  }
}

用法:

class SearchIssuerDto {
  @IsDefined()
  @Validate(IsNumberOrString)
  search: number | string;
}