Mongoose docs about required
validator不包含任何解釋required
究竟是什麼意思。Mongoose中的'required'驗證器實際上做了什麼?
我認爲這很明顯undefined
不會通過這個驗證器,並且所有值爲真的值(!!v
)都將被允許。但是,空字符串和空字符串呢?
如果他們沒有通過該驗證器,是否有一個標準的Mongoose方式來允許除undefined
之外的任何其他內容或正在編寫自定義驗證器的唯一方法?
Mongoose docs about required
validator不包含任何解釋required
究竟是什麼意思。Mongoose中的'required'驗證器實際上做了什麼?
我認爲這很明顯undefined
不會通過這個驗證器,並且所有值爲真的值(!!v
)都將被允許。但是,空字符串和空字符串呢?
如果他們沒有通過該驗證器,是否有一個標準的Mongoose方式來允許除undefined
之外的任何其他內容或正在編寫自定義驗證器的唯一方法?
校驗不上
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( '主體')。驗證(功能(體){ 回報的typeof身體!===「 undefined'; },'Body can not be undefined');
更新:請參閱本link
未定義場運行驗證器不支持,目前沒有計劃
幾個技巧在這個環節完成。
添加到zangw答案,目前唯一允許undefined
以外的任何其他合理的方法是將自定義函數傳遞給required
屬性。它不能通過validate
完成,因爲自定義驗證器不在未定義的值上運行。
var schema = new mongoose.Schema({
field: { type: String, required: function()
{
return this.field === undefined;
}}
});
你自己說過,驗證器不會在未定義的值上運行。那個自定義驗證器應該如何工作? ;) –