Mongoose Schema
验证无法正常工作,而嵌入式架构对象不会存储在单独的集合中。以下是我的架构,
我的嵌入式架构与验证器,
var myValidator = function(value) {
return value.length > 10;
}
var myValidator2 = function(value) {
return value.length < 5;
}
var subSchema = new Schema({
"key1": {type: String, "default": null, validate: [myValidator, "Too short value"]},
"key2": {type: String, validate: [myValidator2, "Too long"]}
});
在我的模型文件中,我尝试这样,
var sub1 = new subSchema({key1: "short", "key2": "good"});
它应该抛出错误,因为key1
的值是&#34; 短&#34;这对验证器无效。
但它抛出任何错误,它只是接受而且父模型存储它。
答案 0 :(得分:1)
Mongoose仅对save()或modelInstance.validate()
执行验证。如果您需要在不将文档保存到数据库的情况下进行验证,则可以使用以下选项,
<强> 1。调用validate()
在validate()
模型对象上调用subSchema
将通过callback
sub1.validate(function(error) {
// but digging this error object is tedious process
});
<强> 2。调用验证器本身
if (myValidator(value)) {
// do action
} else {
// throw error
}
我推荐这个解决方案,因为你只需要直接调用验证器。但请记住,与Schema Validators不同,您需要在每save()之前手动调用验证程序。