验证类验证器中的空白空间

Gan*_*eSH 9 node.js typeorm class-validator

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

@IsAlphaNUMereic() 地址:字符串;

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

eol*_*eol 10

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;
                }
            }
        });
    };
}
Run Code Online (Sandbox Code Playgroud)

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

@IsNotBlank()
@IsAlphaNumeric()
Address: string;
Run Code Online (Sandbox Code Playgroud)

查看https://github.com/typestack/class-validator#custom-validation-decorators以获取有关自定义验证器的更多信息。

  • 这就是他所写的,您必须创建自己的装饰器并将其注册到您的代码中,然后您就可以使用它 (3认同)

Mar*_*kus 8

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

@IsNotEmpty()
@Transform((value: string) => value?.trim())
Address: string;
Run Code Online (Sandbox Code Playgroud)

  • @huykon225`从'class-transformer'导入{TransformFnParams};` (2认同)