Golang での MongoDB Omitempty フラグとフィールドの更新
Omitempty 問題への対処
作業時Golang 構造でomitemptyフラグを使用するオプションのフォームフィールドを使用する場合、フロントエンドとバックエンドの両方がフォームの送信をどのように処理するかを考慮することが重要です。特に、チェックボックスでは、omitempty フラグが空の値を無視するため、問題が生じます。
デフォルトの動作
初めてフォームを保存するとき、適切な値が MongoDB に保存されます。省略空フラグのおかげで成功しました。ただし、その後のフォーム更新では、チェックされていないチェックボックス (値が空) は構造にマッピングされないため、保存されません。その結果、データベース内の実際の値が false であるはずであっても、フォーム編集時にチェックボックスが視覚的にチェックされたままになります。
構造の変更
この問題を解決するには、簡単な解決策は、omitempty フラグを使用してフィールドの型を bool と int からそれぞれの型のポインター (*bool と int) に変更することです。 *int).
ポインターの使用
ポインターは 3 つの異なる状態を許可します:
利点
このアプローチでは、次のものを区別するための API:
カスタム マーシャリングとアンマーシャリング
あるいは、カスタム マーシャリングおよびアンマーシャリング ロジックを実装して、omitempty を使用してフィールドを処理することもできます。空の値を明示的にチェックし、それに応じて設定することでフラグを立てます。ただし、ポインターを使用すると、より簡単で自動的な解決策が得られます。
結論
omitempty フラグを使用してフィールドをポインターに変更することで、オプションのフォーム フィールドを効果的に処理し、チェックボックスの更新がフロントエンドとバックエンドの両方に正しく反映されていることを確認します。
以上がGolang フォーム更新で MongoDB の `omitempty` フラグを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。