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

Simple Schema RegEx validation doesn't return error message

本文关键字:返回 错误 消息 验证 模式 RegEx 简单      更新时间:2023-09-26

我正在用SimpleSchema验证我的数据。除了试图获得regex验证的错误消息外,它似乎在大多数情况下都可以工作。

我有的是:

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字段的错误信息?

这个问题已经提了几个月了,但是我会试着给那些邮件落在这里的人一个答案…

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

让我进一步解释:

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

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

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

您将从SimpleSchema获得一个错误,抱怨数据对象中的email属性不满足email正则表达式。