ホームページ > バックエンド開発 > Golang > SQLx を使用してネストされた構造体を正常にスキャンするにはどうすればよいですか?

SQLx を使用してネストされた構造体を正常にスキャンするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-22 12:11:14
オリジナル
988 人が閲覧しました

How Can I Successfully Scan Nested Structs Using SQLx?

SQLx を使用したネストされた構造体のスキャン

SQLx を使用してクエリ結果をネストされた構造体にスキャンしようとすると、宛先名が見つからないなどのエラーが発生する場合があります。この問題は、構造体のフィールド名とデータベースの列名が正確に一致しない場合に発生します。

解決策: ネストされた構造体の埋め込み

SQLx ドキュメントで提案されているように、正しいアプローチは、ネストされた構造体を埋め込むことです。親構造体内。例:

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address
}

type Address struct {
   Street string `json:"street" db:"street"`
   City   string `json:"city" db:"city"`
}
ログイン後にコピー

この例では、Address 構造体が Customer 構造体内に埋め込まれています。ネストされた構造体を埋め込むことにより、Address に関連付けられたフィールド名とタグが Customer にプロモートされます。その結果、SQLx は結果を適切なフィールドに正しくマップできます。

フィールドの重複を避ける

ネストされた構造体を埋め込むと、JSON マーシャリング中に出力が平坦化されることに注意することが重要です。元のネストされた構造を維持するには、データベース構造体を元の型に再マップします。あるいは、クエリ結果をスキャンして map[string]interface{} に取り込むこともできますが、これには Go で Postgres データ型を慎重に扱う必要があります。

結論

これらのガイドラインに従うことで、クエリ結果を正しくスキャンできます。 SQLx を使用して結果をネストされた構造体に変換します。ネストされた構造体を適切に埋め込むか、マップへの再マッピングやスキャンなどの代替アプローチを利用することで、データベースから複雑なデータ構造を効果的に抽出できます。

以上がSQLx を使用してネストされた構造体を正常にスキャンするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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