在mongoose.model中,我選擇了name的型別為string,age的型別為number,但是當我輸入一個數字作為name的值時,我沒有得到一個錯誤,當我使用像'18'作為age的值時也發生了同樣的事情。
以下是代碼:
const User = mongoose.model('user', {
name: { type: String }。
年齡: { 型別: Number }.
});
const me = new User({
name: 12,
年齡: '18'。
});
me.save()。 then(() => console.log(me))。 catch(span class="hljs-params">error => console.log(error))。
uj5u.com熱心網友回復:
Mongoose將值轉換為相應的型別,如果失敗則拋出CastError,從doc:
在運行驗證器之前,Mongoose會嘗試將值強制為 正確的型別。這個程序被稱為鑄造檔案。如果鑄造 失敗,
error.errors物件將包含一個CastError物件。
你可以通過給定age的值'aa'來嘗試這樣做,例如。
如果你想覆寫這個行為,你可以使用下面的一個選項:
如果你想覆寫這個行為,你可以使用下面的一個選項。
- 全域禁用鑄造。
mongoose.Number.cast(false)。
- 只為給定的路徑禁止鑄造:
age: {
type: Number,
cast: false // disable casting just for this path。
},
- 使用一個自定義函式:
age: {
type: Number,
cast: v => { return typeof v == 'number' && ! isNaN(v)? Number(v): v; } //override casting just for this path。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319835.html
標籤:
上一篇:獲取參考產品模型的用戶串列
