gpt4 book ai didi

javascript - 当模式中的验证匹配 false 时,Mongoose 不会抛出错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:37 25 4
gpt4 key购买 nike

我为应用程序中最常见的场景创建了自定义通用验证函数,例如电子邮件验证、电话号码验证和日期/时间验证。

时间验证(HH:MM 格式):

    validateTime: (time) => {
return [new RegExp(HHMM_TIME_FORMAT).test(time), 'Wrong time format. Expected hh:mm']
}

模型中的用法:

...
visitHourStart: {
type: String,
validate: modelValidator.validateTime
}
...

给定 VisitHourStart 值:x08:30xvalidateTime 返回 false - 这是良好的行为,但它不会抛出给定消息的错误。文档正在以错误的时间保存到数据库。

如何告诉我的模型在验证不成功时抛出错误?

编辑1:validate: modelValidator.validateTime 更改为

validate: {
validator: time => new RegExp(HHMM_TIME_FORMAT).test(time),
message: 'Wrong time format. Expected hh:mm'
}

内部架构不起作用,仍然没有抛出错误并且保存了文档。

最佳答案

validate 参数需要一个表示 Custom Validator 的对象如下所示:

visitHourStart: {
type: String,
validate: {
validator: time => new RegExp(HHMM_TIME_FORMAT).test(time),
message: 'Wrong time format. Expected hh:mm'
}
}

您还可以直接指定RegExp类型而不是箭头函数:

visitHourStart: {
type: String,
validate: {
validator: new RegExp(HHMM_TIME_FORMAT),
message: 'Wrong time format. Expected hh:mm'
}
}

编辑:在您的示例中,您传递一个返回数组的箭头函数,而 Mongoose 期望直接指定数组,如下所示:

validate: [
new RegExp(HHMM_TIME_FORMAT),
'Wrong time format. Expected hh:mm'
]

我已经测试了以上三种方法,每次都会抛出错误

关于javascript - 当模式中的验证匹配 false 时,Mongoose 不会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59519130/

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