2014-09-11 48 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整除。

您还可以检查字段之间的一致性。例如,也许你可以检查邮政编码/邮政编码是否与用户输入的州/省相匹配。