【问题标题】:Simple Schema RegEx validation doesn't return error message简单模式正则表达式验证不返回错误消息
【发布时间】:2017-10-04 02:00:06
【问题描述】:

我正在使用 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));
  }
}

在此之后,errors 包含以下内容:

["Name must be at least 2 characters", "Unknown validation error"]

据我了解,defined 正则表达式有一条默认错误消息defined

如何获取email 字段的错误消息?

【问题讨论】:

    标签: javascript regex meteor simple-schema


    【解决方案1】:

    这个问题现在已经有几个月了,但我会尝试为其他任何邮件落在这里的人提供答案......

    我尚未运行此代码进行测试,但我最初的想法是第一个键“名称”已验证,如果失败,它将返回您看到的错误 ["Name must be at least 2 characters", "Unknown validation error"]

    让我进一步解释:

    你定义的地方: var data = { name: '', email: '', };

    您已将名称字段的值定义为空。然后在几行之后执行context.validate(data)。您还为名称配置了 min: 2 选项,在类型为 String 的上下文中, min 选项将验证数据对象中的字符串是否包含至少两个字符长的字符串(更不用说规定的最大值上边界也是如此)。在将 name 参数设置为 [String] 的上下文中,这意味着模式的 name 属性是一个字符串数组,然后 min 选项将尝试根据 name 属性中的条目数进行验证。

    通过在数据对象中提供满足字符串长度的名称或从验证要求中删除最小值来修复错误。

    然后您将收到来自 SimpleSchema 的错误,抱怨数据对象中的电子邮件属性不满足电子邮件正则表达式。

    【讨论】:

    • ...还有MinString 可供选择,因此我的解释或您的代码可能需要进一步探讨为什么您会收到您在github.com/aldeed/… 时遇到的错误
    猜你喜欢
    • 2019-03-23
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多