猫鼬匹配验证器给出验证错误,即使字符串匹配
mongoose match validator giving validation error even though the string matches
我正在尝试在 mongoose 中使用内置匹配验证器,但它向我显示以下错误:
(node:4456) UnhandledPromiseRejectionWarning: ValidationError: data validation failed: phone: Path `phone` is invalid (12345678910).
这是我的架构:
const schema = new mongoose.Schema({
name: {
type: String,
required: true,
message: "Name is required",
},
isGold: {
type: Boolean,
default: false,
},
phone: {
type: String,
match: /^d{11}$/g,
required: true,
},
});
我已经在线检查了正则表达式(在 regex101 网站上),它在那里工作正常,但在这里它给了我错误。我不知道是什么导致了这个问题。请帮忙。
您确定您测试了那个正则表达式吗?现在您的正则表达式显示 "start of string"、"exactly 11 instances of the letter d
"、"end of string".
因此,只有字符串 ddddddddddd
会匹配。
也许您想匹配 11 个 数字?那么你在 \d
!
中缺少反斜杠
固定的正则表达式如下所示:
/^\d{11}$/
(注意这里的g
修饰符是多余的。)
旁注:您得到 UnhandledPromiseRejectionWarning
的事实表明您没有正确处理错误。可能您有一些您没有 await
ing 的异步代码(或者如果您不使用 async
/await
:您忘记调用 .catch()
)。这不应该发生,在 node.js 的未来版本中,它可能只会让您的进程崩溃,因为静默错误从来都不是一件好事,最好快速失败。所以,你应该弄清楚你在哪里忘记处理承诺拒绝并修复它。
我正在尝试在 mongoose 中使用内置匹配验证器,但它向我显示以下错误:
(node:4456) UnhandledPromiseRejectionWarning: ValidationError: data validation failed: phone: Path `phone` is invalid (12345678910).
这是我的架构:
const schema = new mongoose.Schema({
name: {
type: String,
required: true,
message: "Name is required",
},
isGold: {
type: Boolean,
default: false,
},
phone: {
type: String,
match: /^d{11}$/g,
required: true,
},
});
我已经在线检查了正则表达式(在 regex101 网站上),它在那里工作正常,但在这里它给了我错误。我不知道是什么导致了这个问题。请帮忙。
您确定您测试了那个正则表达式吗?现在您的正则表达式显示 "start of string"、"exactly 11 instances of the letter d
"、"end of string".
因此,只有字符串 ddddddddddd
会匹配。
也许您想匹配 11 个 数字?那么你在 \d
!
固定的正则表达式如下所示:
/^\d{11}$/
(注意这里的g
修饰符是多余的。)
旁注:您得到 UnhandledPromiseRejectionWarning
的事实表明您没有正确处理错误。可能您有一些您没有 await
ing 的异步代码(或者如果您不使用 async
/await
:您忘记调用 .catch()
)。这不应该发生,在 node.js 的未来版本中,它可能只会让您的进程崩溃,因为静默错误从来都不是一件好事,最好快速失败。所以,你应该弄清楚你在哪里忘记处理承诺拒绝并修复它。