比方說,我有一個非常簡單的架構,並帶有一個總是返回false的自定義驗證函數。爲什麼Mongoose不驗證空文檔?
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中保存爲空。