2015-09-01 52 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 - 簡單,模式#定製驗證的消息 –