Я пытаюсь проверить параметры моих пользователей / конечных точек PUT, но мне бы хотелось, чтобы все параметры были необязательными, но как только потребитель API заполнит эти параметры, я бы хотел их проверить.
Я пытался объединить @ApiModelProperty, требующий false, с декоратором каналов проверки, но канал проверки принял ApiModelProperty
(вполне нормально для отправки 400 неправильных запросов HttpException)
Вот мой DTO:
usersUpdate.dto.ts
import { IsEmail, IsEnum, IsPhoneNumber, IsEmpty } from 'class-validator';
import { ApiModelProperty } from '@nestjs/swagger';
import { RoleType } from './role-type.enum';
class UserInfo {
@ApiModelProperty({ description: 'User firstname', required: false })
readonly firstname: string;
@ApiModelProperty({ description: 'User lastname', required: false })
readonly lastname: string;
@ApiModelProperty({description: 'User postal address', required: false })
readonly address: string;
@ApiModelProperty({ description: 'User phone number', required: false })
@IsPhoneNumber('FR')
readonly phone: string;
@ApiModelProperty({ description: 'User siret number', required: false })
readonly siret: string;
}
export class UpdateUserDTO {
@ApiModelProperty({ description: 'User email address', required: false })
readonly email: string;
@ApiModelProperty({ description: 'User password', required: false })
readonly password: string;
@ApiModelProperty({ description: 'User informations', required: false })
readonly user_info: UserInfo;
@ApiModelProperty({ enum: ['Admin', 'Runner', 'Dispatcher'], description:'User role', required: false })
readonly role: RoleType;
@ApiModelProperty({ description: 'User activation token', required: false })
readonly activationToken: string;
}
Я хотел бы использовать и @IsEmail()
декоратор для параметра электронной почты и @Enum()
декоратор в роли, но как только я использую этот декоратор, параметр обязателен.
Кто-нибудь знает, как пропустить этот валидатор, если параметры пусты?