2015-09-01 57 views
1

我正在使用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正则表达式的默认的错误消息defined

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

回答

0

这个问题现在是一个几个月大的,但我会尝试其他任何人在这里,邮件秋天的答案...

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

让我进一步解释:

在其中定义地点: var data = { name: '', email: '', };

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

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

然后,您将从SimpleSchema中获得一个错误,抱怨数据对象中的电子邮件属性不符合电子邮件正则表达式。

+0

...还有'MinString'作为一个选项可用,所以我的解释或代码可能需要进一步探讨,为什么你得到的错误,你得到时 - https://github.com/aldeed/meteor - 简单,模式#定制验证的消息 –