ホームページ > バックエンド開発 > Golang > Golang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?

Golang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?

Susan Sarandon
リリース: 2024-12-16 14:46:15
オリジナル
600 人が閲覧しました

Why are my Golang mgo queries returning empty user objects?

Golang mgo クエリの空のオブジェクト

提供されたコードでは、col.Find(bson.M) を使用して特定のユーザーの MongoDB をクエリするときに、 {"user": username}).One(&user)、ユーザー構造体は空のオブジェクトとして初期化されます。これは、ユーザー構造体のフィールドがエクスポートされず、mgo パッケージがフィールドを無視するために発生します。

エクスポートされたフィールドを使用した解決策

この問題を解決するには、次のようにします。ユーザー構造体のフィールドをエクスポートする必要があります。デフォルトでは、MongoDB からフィールドにアクセスするときにフィールド名が使用されます。ただし、タグを使用してカスタム フィールド マッピングを指定できます。

エクスポートされたフィールドとタグを含む変更された構造体は次のとおりです。

type users struct {
    User string `bson:"user" json:"user"`
    Data string `bson:"data" json:"data"`
}
ログイン後にコピー

これで、ユーザー構造体のフィールドが正しくエクスポートされ、クエリは期待どおりの結果を返します。

BSON と JSON に関する追加の注意事項タグ:

bson タグと json タグは、Go 構造体フィールドを MongoDB ドキュメントと JSON データにそれぞれマップする方法を指定するために使用されます。 bson タグは BSON ドキュメント内のフィールド名を指定し、json タグは JSON データ内のフィールド名を指定します。

タグを指定しない場合、デフォルトで構造体のフィールド名が使用されます。ただし、タグを使用すると、他のシステムや規則との互換性を保つためにフィールド名をカスタマイズできます。

以上がGolang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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