整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
(16)被迫吃芒果的前端工程師 - Mongoose 之 Update 奇妙的狀況
前言
接下來回過頭聊一下 Update 的部分,其實 Update 有個很特別的地方與狀況,但沒有講到,所以特別挪一篇來聊聊。
Update 奇妙的狀況
我們知道當 Schema 型別與範圍如果不正確的話再新增時就會出現錯誤,例如年齡上限是 99 但我寫到 100,然後行業我寫了 enum 沒有的園藝業
1 | |
這時候寫入時就會出現錯誤

但是這時候如果你使用 findOneAndUpdate 卻會成功更新
1 | |

看到這邊你應該會覺得「oh!這一定是 Mongoose 的 Bug!」,其實這不算是 Mongoose 的 Bug,而是在做 Update 的時候必須替 option 額外多一個設置它才會針對 Update 做驗證
這邊先讓我還原一下資料
1 | |
還原之後,這邊我們要調整一下 findOneAndUpdate,只需要針對 option 加上 runValidators 為 true
1 | |
這時候你在試著更新一次就會發現驗證正常運作了

因此在更新時,runValidators 的選項是比較需要注意的地方。
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ