【问题标题】:Validating empty space in class validator验证类验证器中的空白空间
【发布时间】:2019-08-15 10:15:15
【问题描述】:

我想验证地址字段,它可能包含数字或字符串,但它不应该接受连续的空格

@IsAlphaNUMeric() 地址:字符串;

我想要那个,地址可以是数字或字母... 但它不应该接受连续的空格

【问题讨论】:

    标签: node.js typeorm class-validator


    【解决方案1】:

    没有自定义验证装饰器的替代解决方案是:

    @IsNotEmpty()
    @Transform(({ value }: TransformFnParams) => value.trim())
    Address: string;
    

    【讨论】:

      【解决方案2】:

      Afaik 不支持“isNotBlank”装饰器,但您可以自己编写一个:

      import { registerDecorator, ValidationOptions } from "class-validator";
      
      export function IsNotBlank(property: string, validationOptions?: ValidationOptions) {
          return function (object: Object, propertyName: string) {
              registerDecorator({
                  name: "isNotBlank",
                  target: object.constructor,
                  propertyName: propertyName,
                  constraints: [property],
                  options: validationOptions,
                  validator: {
                      validate(value: any) {
                          return typeof value === "string" && value.trim().length > 0;
                      }
                  }
              });
          };
      }
      

      然后您可以将此自定义验证器添加到您现有的验证器中:

      @IsNotBlank()
      @IsAlphaNumeric()
      Address: string;
      

      结帐https://github.com/typestack/class-validator#custom-validation-decorators 了解有关自定义验证器的更多信息。

      【讨论】:

      • 在 calss 验证器中没有名为 @IsNotBlank 的验证器
      • @GaneSH:如果这解决了你的问题,你能接受这个答案吗?谢谢。
      【解决方案3】:
      @IsNotEmpty()
      @Transform((({value}): string) => value?.trim())
      Address: string;
      

      解构'值'之后你可以修剪它

      【讨论】:

        猜你喜欢
        • 2013-05-18
        • 1970-01-01
        • 2020-01-22
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多