ホームページ > バックエンド開発 > Golang > Golang の `omitempty` を使用して MongoDB 更新で空の値を保持する方法

Golang の `omitempty` を使用して MongoDB 更新で空の値を保持する方法

DDD
リリース: 2024-11-23 10:23:14
オリジナル
679 人が閲覧しました

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

Golang 構造の "omitempty" を使用して MongoDB 更新で空の値を処理する方法

はじめに

「omitempty」フィールドを含む Golang 構造により、選択した JSON 値をマッピングできます空の値を持つフィールドを除き、構造に追加します。ただし、空の値がデータベースに反映されない可能性があるため、MongoDB ドキュメントを更新するときに問題が発生する可能性があります。

問題

「omitempty」を含む構造体を使用する場合JSON フォーム値をマップするためのフラグ。空のフィールドは無視されます。これにより、MongoDB でドキュメントを更新するときに問題が発生します。

  • 以前にチェックしたチェックボックスが更新中にオフになっている場合、空の値は構造にマッピングされず、データベースに保存できません。
  • 逆に、REST API の更新では、必要な値のみを指定すると、データベース内の他のフィールド値が、オーバーライドされるべきでないものであってもオーバーライドされる可能性があります。

要件

空の値または更新された値を MongoDB に保存する機能を維持しながら、「omitempty」フラグを維持することは、柔軟で堅牢な更新に不可欠です。 process.

解決策

この問題を解決するには、構造内の影響を受けるフィールドをポインタに変換します。

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ゼロ値への非 nil ポインタは、空のフィールドを表します。
  • ゼロ以外の値への非 nil ポインタは、フィールドを指定された値に設定します。

ポインタを使用する、「omitempty」動作を維持しながら、MongoDB 更新で空の値と更新された値の両方を柔軟に処理できるようにします。

以上がGolang の `omitempty` を使用して MongoDB 更新で空の値を保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート