Проверка пустого пространства в валидаторе класса
Я хочу проверить адресное поле, оно может содержать числа или строки, но оно не должно принимать непрерывные пустые места
@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;
}