2016-01-29 21 views
0

Mongoose docs about required validator不包含任何解釋required究竟是什麼意思。Mongoose中的'required'驗證器實際上做了什麼?

我認爲這很明顯undefined不會通過這個驗證器,並且所有值爲真的值(!!v)都將被允許。但是,空字符串和空字符串呢?

如果他們沒有通過該驗證器,是否有一個標準的Mongoose方式來允許除undefined之外的任何其他內容或正在編寫自定義驗證器的唯一方法?

回答

1

參考validation

校驗不上undefined值運行。唯一的例外是所需的驗證程序。

測試此以下模式

var CommentSchema = new mongoose.Schema({ 
    body: { 
     type: String, required: true 
    } 
}); 

保存bodynull''

var c1 = new Comment({ 
     body: null, 
    }); 

    var c1 = new Comment({ 
     body: '', 
    }); 

他們兩人都無法通過驗證。

,只確認undefined,我認爲它可以通過定製來完成驗證

CommentSchema.path( '主體')。驗證(功能(體){ 回報的typeof身體!===「 undefined'; },'Body can not be undefined');

更新:請參閱本link

未定義場運行驗證器不支持,目前沒有計劃

幾個技巧在這個環節完成。

+0

你自己說過,驗證器不會在未定義的值上運行。那個自定義驗證器應該如何工作? ;) –

0

添加到zangw答案,目前唯一允許undefined以外的任何其他合理的方法是將自定義函數傳遞給required屬性。它不能通過validate完成,因爲自定義驗證器不在未定義的值上運行。

var schema = new mongoose.Schema({ 
    field: { type: String, required: function() 
    { 
     return this.field === undefined; 
    }} 
}); 
相關問題