【发布时间】:2013-12-28 01:38:21
【问题描述】:
假设我有一个非常简单的架构,其中包含一个始终返回 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);
});
自定义验证器函数未被调用,err 未定义。
为什么?我不明白为什么 Mongoose 没有运行自定义验证器。
这是设计使然吗?它是一个错误吗? 我应该扭转局面吗?我应该在验证之前手动检查空数据吗?
我做错了吗?
PS:如果你调用save,文档将在MongoDB中保存为空,尽管有自定义验证器。
【问题讨论】:
标签: node.js validation mongoose