Я пишу конечную точку регистрации для API, над которым я работаю, и использую nestjs и class-validator для проверки входных данных.
Пользователь может зарегистрироваться, используя либо номер телефона, либо адрес электронной почты, либо оба. Таким образом, чтобы подтвердить ввод, я должен убедиться, что по крайней мере один из них предоставляется. Но мне трудно понять, как это сделать, не создавая беспорядка.
Это мой 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
}
Как видите, я использовал условную проверку, которая работает в тех случаях, когда указан только один номер телефона или адрес электронной почты. Но проблема в том, что, когда оба предоставлены, один из них не будет проверен, и будет разрешено недопустимое значение.
Есть предложения?