首頁 > 後端開發 > Golang > 如何使用 Golang 的 omitempty 保留 MongoDB 更新中的空值?

如何使用 Golang 的 omitempty 保留 MongoDB 更新中的空值?

DDD
發布: 2024-11-23 10:23:14
原創
677 人瀏覽過

How to Preserve Empty Values in MongoDB Updates Using Golang's `omitempty`?

如何在Golang 結構中使用“omitempty”處理MongoDB 更新中的空值

簡介

帶有「omitempty」欄位的Golang 結構允許將選擇性JSON值對應到結構,排除具有空值的欄位。但是,這可能會在更新 MongoDB 文件時帶來挑戰,因為空值可能不會反映在資料庫中。

問題

使用帶有「omitempty」的結構時用於對應 JSON 表單值的標誌,空白欄位將被忽略。這在更新MongoDB 中的文件時會帶來問題:

  • 如果在更新過程中取消選取先前選取的複選框,則空值不會映射到結構中,且無法儲存到資料庫.
  • 相反,在 REST API 更新中,僅提供必要的值可以覆蓋資料庫中的其他欄位值,甚至是那些不應該提供的值已更改。

要求

維護「omitempty」標誌,同時保留在 MongoDB中保存空值或更新值的能力對於靈活和穩健的更新至關重要

解決方案

要解決此問題,請將結構體中受影響的欄位轉換為指標:

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}
登入後複製

這樣:

  • nil指標表示省略的欄位。
  • A指向零值的非零指標表示一個空欄位。
  • 指向非零值的非零指標將欄位設為指定值。

透過使用指針,我們可以靈活地處理 MongoDB 更新中的空值和更新值,同時保留「omitempty」行為。

以上是如何使用 Golang 的 omitempty 保留 MongoDB 更新中的空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板