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 サイトの他の関連記事を参照してください。