ホームページ >バックエンド開発 >Golang >キーが存在しない場合の PATCH 部分更新の処理

キーが存在しない場合の PATCH 部分更新の処理

王林
王林転載
2024-02-09 15:39:18842ブラウズ

当密钥不存在时处理 PATCH 部分更新

#php エディタ Apple は本日、一部のアップデートの処理時にキーが存在しないという問題についてお知らせします。 PATCH リクエストを行うときに、キーが存在しない状況が発生することがあります。では、どのように対処すればよいのでしょうか?この記事では、この状況に適切に対処し、システムの正常な動作を確保できるように、この問題を解決する方法と手順を詳しく紹介します。見てみましょう!

質問内容

この問題を解決する方法を考えています。

いくつかのフィールドを含む user 構造があります。ただし、パッチ ユーザー呼び出しの json オブジェクトをデコードするときに、キーが欠落しているため、値が *nil に設定されます。対応するデータベース プロパティのタイプは text null であるため、キーが欠落している場合、結果は常に null として格納されます。

リーリー

imageurl nil も可能ですが、オブジェクトがクライアントから送信される場合:

リーリー

これは、imageurl が JSON に存在しないため、imageurl = nil にデコードされます。

各フィールドが存在するかどうかをチェックする dto の代わりに map[string]struct{} を使用せずに部分的な更新を処理するにはどうすればよいですか?

回避策

カスタム json.unmarshaler を実装して、フィールドが完全に省略されていても、その値が であるかどうかを判断できます。 null、または null 以外の値が指定されます。

リーリー リーリー

https://www.php.cn/link/22f791da07b0d8a2504c2537c560001c

カスタム タイプを必要としないもう 1 つの方法は、 json をアンマーシャリングする 前に go フィールドの値を 現在の データベース列の値に設定することです。受信した JSON に一致するフィールドが含まれていない場合、json.decoder (json.unmarshal によって使用される) はターゲットのフィールドに「タッチ」しません。

リーリー

https://www.php.cn/link/cdf49f5251e7b3eb4f009483121e9b64

以上がキーが存在しない場合の PATCH 部分更新の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。