Проверка пустого пространства в валидаторе класса

Я хочу проверить адресное поле, оно может содержать числа или строки, но оно не должно принимать непрерывные пустые места

@IsAlphaNUmereic() Адрес: строка;

я хочу, чтобы адрес мог быть числовым или буквенным... но он не должен принимать пустые пробелы

5 ответов

Альтернативным решением без настраиваемых декораторов проверки было бы:

@IsNotEmpty()
@Transform((value: string) => value?.trim())
Address: string;

Afaik, поддержка "isNotBlank" не поддерживается, но вы можете написать ее самостоятельно:

import { registerDecorator, ValidationOptions } from "class-validator";

export function IsNotBlank(property: string, validationOptions?: ValidationOptions) {
    return function (object: Object, propertyName: string) {
        registerDecorator({
            name: "isBlank",
            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 для получения дополнительной информации о пользовательских валидаторах.

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

разрушить 'значение' после этого вы можете обрезать его

Вы можете использовать@NotContainsвалидатор класса. DTO должно понравиться:

Вот лучший способ проверить ваш ключ: Импортируйте необходимые свойства:

      import { IsNotEmpty,Length,NotContains } from "class-validator";
import { Transform } from 'class-transformer';
import { ApiProperty } from "@nestjs/swagger";

Создайте класс для полезной нагрузки:

      export class SomePayloadCheckDto {
  @ApiProperty({ required: true })
  @IsNotEmpty()
  @NotContains(" ")
  @Transform(({ value }) => value?.trim())
  @Length(3, 20)
  someString: string;
}
Другие вопросы по тегам