我正在为正在处理的 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
}
如您所见,我使用了条件验证,它适用于仅提供电话号码或电子邮件地址之一的情况。但问题是,当两者都提供时,其中一个将不会被验证,并且将允许无效值。
有什么建议么?