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

CH 10 函式(function)

CH 10 函式(function)

Universal Plug and Play (UPnP)

Universal Plug and Play (UPnP)

Checked and Unchecked Exception in Java

Checked and Unchecked Exception in Java


Comments