Sequelize validations&constraints


Posted by Rich on 2021-09-15

Sequelize 有 validations 和 constraints 兩種不一樣可以設定的規則。
根據官網的說明,validations 是在進行 SQL 指令前會先檢查的規則,例如 isEmpty, 或 isLowercase,可以檢查是不是空字串和是不是小寫。這個階段的檢查不會進行任何 SQL 指令。constraints 則是定義在 SQL 中的規則。例如 username 是 unique 的,那新增的時候要先在 database 搜尋一次,確認沒有重複才能新增。如果有重複就會報錯。但不管如何一定要先跑過 SQL 才會有結果,所以這種規則會跑 SQL。

毛問題:Sequelize 我說不得為空你還給我空空

我設了 isEmpty: false,但沒輸入東西還是過關,寫到資料庫去了。覺得滿頭問號。啊 (幹),原來是沒輸入是 null,所以擋不到。如果是輸入 '' 這樣的話,就可以擋住。哇這種細節很難發現,雖然之前遇過了,但還是會忘。
這時候就要加 notNull: true ,然後他就會報錯,跟你說還要加 allowNull。這兩個好像是一起用的。

有一種規則是 validations 和 constraints 的混合,它就是 allowNull。官網的說明。這個規則會在 validation 的檢查時生效,也可能在 SQL 的時候生效,所以說是混種。










Related Posts

Rails API 學習紀錄 (Part 1)

Rails API 學習紀錄 (Part 1)

物件導向基礎與 prototype

物件導向基礎與 prototype

不可不知的小工具-cURL

不可不知的小工具-cURL


Comments