简单模式RegEx验证不会返回错误消息

时间:2015-09-01 02:37:42

标签: javascript regex meteor simple-schema

我正在使用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"]

根据我的理解,SimpleSchema.RegEx.Email正则表达式存在默认错误消息defined

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

1 个答案:

答案 0 :(得分:0)

这个问题现在已经有几个月了,但是我会尝试给那些邮件落在这里的其他人一个答案......

我没有运行此代码进行测试,但我最初的想法是验证了第一个键'name',如果失败则返回您看到的错误["Name must be at least 2 characters", "Unknown validation error"]

让我进一步解释一下:

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

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

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

然后,您将从SimpleSchema收到错误,抱怨数据对象中的email属性不满足Email正则表达式。