這個問題幾乎說明了一切。
據我從檔案中得知,一個是針對一般驗證錯誤(required未包含欄位、maxLength超出欄位等)。
reason每當自定義驗證器中發生錯誤時,一個作為另一個內部給出......這是正確的嗎?
如果是這樣,哪個是哪個?這里使用的命名約定真的很混亂!
uj5u.com熱心網友回復:
經過更多的研究和調查。似乎所有驗證型別錯誤(包括Error.CastError錯誤)總是存在于Error.ValidationError物件中。這是父物件,它本身并沒有真正提供太多資訊,除了驗證在某處失敗。
在這個Error.ValidationError物件中,可以有許多其他錯誤物件。正是這些孩子將成為Error.ValidatorError(或Error.CastError)的實體。
因此,驗證錯誤將類似于:
// When receiving some error, with the variable name "err".
err instanceof mongoose.Error.ValidationError
// true
console.log(err);
errors: {
some_doc_field_name: {} // Possibly an instanceof "Error.ValidatorError"
another_doc_field_name: {} // Possibly an instanceof "Error.CastError"
}
TL;博士:
- 驗證錯誤= 錯誤的父型別。
- Validat或Error = 其子級可能具有的潛在子級錯誤型別之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/490196.html
上一篇:在貓鼬中按鍵查找嵌套物件
