我正在为我工作的API编写注册端点,使用NestJS和class-validator验证输入数据。用户可以使用电话号码或电子邮件地址或两者一起进行注册。因此,要验证输入,我应该确保至少提供其中之一。但是,我很难弄清楚如何在不搞砸的情况下执行它。
这是我的DTO:
这是我的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
}
如您所见,我使用了条件验证,这适用于仅提供电话号码或电子邮件地址的情况。但问题在于当两者都提供时,其中之一将无法通过验证,并允许输入无效的值。
有什么建议吗?