Mongoose docs about required
validator不包含required
实际含义的任何解释。
我认为很明显undefined
不会传递此验证程序,并且所有评估为true(!!v
)的值都将被允许。但是null和空字符串呢?
如果他们没有通过那个验证器,是否有一种标准的Mongoose方式允许除undefined
以外的任何其他方式或者只能编写自定义验证器?
答案 0 :(得分:1)
请参阅validation
验证程序不会在
undefined
值上运行。唯一的例外是必需的验证器。
测试以下架构
var CommentSchema = new mongoose.Schema({
body: {
type: String, required: true
}
});
使用body
和null
,
''
字段
var c1 = new Comment({
body: null,
});
var c1 = new Comment({
body: '',
});
它们都无法通过验证。
要仅验证 undefined
,我认为可以通过自定义验证来完成
CommentSchema.path('body')。validate(function(body){
返回typeof body!==='undefined';
},'身体不能被定义');
更新:请参阅此link
不支持在未定义字段上运行验证程序,目前尚未计划
在此链接中完成了一些技巧。
答案 1 :(得分:0)
添加到zangw回答,目前唯一允许除False
之外的任何其他方法的合理方法是将自定义函数传递给undefined
属性。它不能通过required
来完成,因为自定义验证器不会在未定义的值上运行。
validate