javascript - 简单模式正则表达式验证不返回错误消息

标签 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));
  }
}

此后,错误包含以下内容:

["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/

相关文章:

javascript - Angular 组件不会显示

javascript - 在 div 中显示 for 循环值

javascript - 在javascript中生成随机字母并计算每个字母出现了多少次?

regex - 匹配除电子邮件地址之外的所有内容的正则表达式

html - 如何在 iOS 中删除字符串中的评论 HTML 元素

javascript - 在 MeteorJS 中完成注册过程后无法获取用户详细信息

javascript - 如何从包含来自另一个应用程序的数据库查询的 Node.js 函数获取返回值

regex - 如何查询Matlab结构体中匹配特定模式的变量列表?

javascript - 单 View 页面永久链接为空,带有 Iron Router

Meteor 找不到模块 "module"