假设我有一个非常简单的模式,带有一个始终返回 false 的自定义验证函数。
var MofoSchema = new mongoose.Schema({
name: String
});
MofoSchema.path('name').validate(function (value) {
console.log("I'm validating");
return false;
}, 'No pasaran');
mongoose.model('Mofo', MofoSchema);
然后我创建文档的新实例并验证它:
var Mofo = mongoose.model('Mofo');
var mofo = new Mofo({name: "Tarte flambée"});
mofo.validate(function(err) {
console.log(err);
});
完美,自定义验证器函数被调用并且err
充满。
但现在我也做同样的事没有数据:
var Mofo = mongoose.model('Mofo');
var mofo = new Mofo({});
mofo.validate(function(err) {
console.log(err);
});
The 未调用自定义验证器函数 and err
未定义。
为什么?我不明白为什么 Mongoose 不运行自定义验证器。
这是设计使然吗?这是一个错误吗?
我应该扭转局面吗?我应该在验证之前手动检查空数据吗?
难道我做错了什么?
PS:如果你打电话save
,尽管有自定义验证器,文档仍将在 MongoDB 中保存为空。
我认为猫鼬只会验证现有字段。
因此您可以使用“null”值来激活验证
var mofo = new Mofo({name: null});
对于空或未定义
var MofoSchema = new mongoose.Schema({
name: {type: String, required: true}
});
MofoSchema.path('name').validate(function (value) {...}, 'no pasaran');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)