我正在使用 SimpleSchema 对我的数据进行一些验证。它似乎在大多数情况下都有效,除了尝试获取正则表达式验证的错误消息时。
我拥有的是:
FormSchema = new SimpleSchema({
name: {
label: "Name",
type: String,
min: 2,
max: 25
},
email: {
label: "Email",
type: String,
regEx: SimpleSchema.RegEx.Email
}
});
var errors = [];
var data = {
name: '',
email: '',
};
var context = FormSchema.newContext();
if (!context.validate(data)) {
var fields = context.invalidKeys();
for (var i in fields) {
errors.push(context.keyErrorMessage(fields[i].name));
}
}
此后,错误
包含以下内容:
["Name must be at least 2 characters", "Unknown validation error"]
据我了解,有一条默认错误消息 defined对于 SimpleSchema.RegEx.Email
正则表达式。
如何获取电子邮件
字段的错误消息?
最佳答案
这个问题已经有几个月了,但我会尝试为邮件落在此处的其他人提供答案......
我还没有运行此代码来测试,但我最初的想法是第一个键“名称”已验证,如果失败,则会返回您看到的错误[“名称必须至少有 2 个字符” ", "未知的验证错误"]
。
让我进一步解释一下:
您定义的位置:
变量数据 = {
姓名: '',
电子邮件: '',
};
您已将名称字段的值定义为空。然后,您稍后执行 context.validate(data)
几行。您还为名称配置了一个 min: 2
选项,在类型为 String 的上下文中,min 选项将验证数据对象中的字符串是否包含长度至少为两个字符的字符串(更不用说还规定了上限)。在 name 参数设置为 [String]
的上下文中,这意味着模式的 name 属性是一个字符串数组,然后 min 选项将尝试根据中的条目数进行验证名称属性。
通过在数据对象中提供满足字符串长度的名称或从验证要求中删除最小值来修复错误。
然后,您将从 SimpleSchema 收到错误,提示数据对象中的电子邮件属性不满足电子邮件正则表达式。
关于javascript - 简单模式正则表达式验证不返回错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32322694/