gpt4 book ai didi

node.js - 如何确保至少一个字段不为空?(如果只有一个不为空就可以了)

转载 作者:行者123 更新时间:2023-12-04 00:02:48 24 4
gpt4 key购买 nike

我正在为我正在处理的 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
}

如您所见,我使用了条件验证,它适用于仅提供电话号码或电子邮件地址之一的情况。但问题是,当两者都提供时,其中之一将不会被验证,并且将允许使用无效值。

有什么建议?

最佳答案

我想你只需要添加

@ValidateIf(o => o.email == undefined || o.phone)
phone: string


@ValidateIf(o => o.phone == undefined || o.email)
email: string

已编辑

一个小补充

我建议像这样验证:
@ValidateIf(o => !o.email || o.phone)
phone: string

@ValidateIf(o => !o.phone || o.email)
email: string

正确处理 null、0 和 ""(空字符串)

否则,这也是正确的(不应该是):
const data = new register();
data.phone = '';
data.email = '';

关于node.js - 如何确保至少一个字段不为空?(如果只有一个不为空就可以了),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com