Golang 中的MongoDB Omitempty 標誌與欄位更新
解決帶有在Golang 結構中使用omitempty標誌的可選表單字段,它是重要的是要考慮前端和後端如何處理表單提交。特別是,複選框帶來了挑戰,因為 omitempty 標誌會忽略空值。
預設行為
首次儲存表單時,適當的值將儲存在 MongoDB 中由於 omitempty 標誌而成功。但是,在後續表單更新中,任何未選取的核取方塊(具有空值)都不會對應到結構,因此不會儲存。因此,即使資料庫中的實際值應該為 false,但複選框在表單編輯時仍會保持視覺檢查狀態。
修改結構
要解決此問題,簡單的解決方案是將帶有omitempty 標誌的字段類型從bool 和int 更改為相應類型的指針(* bool和*int).
使用指標
指標允許三種不同的狀態:
nil 指標:在更新期間省略該欄位並保留該欄位現有值不變。
此方法解決了問題,因為它允許用於區分的API:
缺少字段(表示為nil),不應觸發更新。
或者,可以實現自訂編組和解組邏輯來處理具有omitempty 標誌透過明確檢查空值並相應地檢查空值並相應地檢查空值設定它們。然而,使用指針提供了更直接、更自動的解決方案。
結論
透過將帶有omitempty 標誌的欄位修改為指針,您可以有效地處理可選表單欄位並確保複選框更新在前端和後端都正確反映。
以上是如何透過 Golang 表單更新正確處理 MongoDB 的 `omitempty` 標誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!