Я пишу конечную точку регистрации для API, над которым я работаю, и я использую nestjs и класс-валидатор для проверки входных данных. Пользователь может зарегистрироваться, используя либо свой номер телефона, либо адрес электронной почты, либо и то, и другое. Итак, чтобы проверить ввод, я должен убедиться, что предоставлен хотя бы один из них. Но мне сложно понять, как это сделать, не создавая беспорядка.
Это мой dto:
export class register {
@ApiModelProperty()
@IsNotEmpty()
@IsAlpha()
firstName: string
@ApiModelProperty()
@IsNotEmpty()
@IsAlpha()
lastName: string
@ApiModelProperty()
@ValidateIf(o => o.email == undefined)
@IsNotEmpty()
@isIRMobile()
phone: string
@ApiModelProperty()
@ValidateIf(o => o.phone == undefined)
@IsNotEmpty()
@IsEmail()
email: string
@ApiModelProperty()
@IsNotEmpty()
password: string
}
Как видите, я использовал условную проверку, которая работает в тех случаях, когда указан только один номер телефона или адрес электронной почты. Но проблема в том, что, когда предоставлены оба, один из них не будет проверен и будет разрешено недопустимое значение.
Какие-либо предложения?