2014-09-11 47 views
0

這個問題似乎愚蠢的,但我無法找到答案...貓鼬預驗證掛機VS的SchemaType

是什麼鉤預驗證和確認的SchemaType之間的區別?我第一次使用pre-hook中間件來做我的驗證,但是在閱讀了doc之後,我發現我可以在schemaType上做同樣的事情。

我打電話的SchemaType驗證這種驗證:

var validateLogin = function (login, res) { 
    res(login === 'foo'); 
} 

var UserSchema = new Schema({ 
    login: { 
     type: String, 
     required: '{PATH} is required', 
     validate: [validateLogin, '{PATH} must be foo'] 
    } 
}); 

在貓鼬的文檔,我可以看到。

驗證在的SchemaType

規定是否意味着,我們應該使用的SchemaType方式儘可能多地? 什麼是真正的不同?

+0

我只能想到能夠在任何時候驗證文檔,而不僅僅是保存 – Fougere 2014-09-11 09:08:57

回答

0

內置的SchemaType驗證在他們可以檢查的內容方面相當有限,儘管它們通常足以滿足您希望執行的驗證的80%或更多。

預保存鉤子允許您執行更復雜的驗證。作爲一個人爲的例子,您可以檢查給定的數字是素數還是可以被3整除。

您還可以檢查字段之間的一致性。例如,也許你可以檢查郵政編碼/郵政編碼是否與用戶輸入的州/省相匹配。