1

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

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

4

1 回答 1

0

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

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

让我进一步解释一下:

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

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

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

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

于 2015-11-26T01:03:17.003 回答