Objek Kosong dalam Pertanyaan mgo Golang
Dalam kod yang disediakan, apabila menanyakan MongoDB untuk pengguna tertentu dengan col.Find(bson.M {"user": username}).One(&user), struct pengguna dimulakan sebagai objek kosong. Ini berlaku kerana medan struct pengguna tidak dieksport, yang membawa kepada pakej mgo mengabaikannya.
Penyelesaian Menggunakan Medan yang Dieksport
Untuk menyelesaikan isu ini, anda perlu mengeksport medan struct pengguna. Secara lalai, nama medan digunakan semasa mengakses medan daripada MongoDB. Walau bagaimanapun, anda boleh menggunakan teg untuk menentukan pemetaan medan tersuai.
Berikut ialah struct yang diubah suai dengan medan dan teg yang dieksport:
type users struct { User string `bson:"user" json:"user"` Data string `bson:"data" json:"data"` }
Kini, medan struct pengguna dieksport dengan betul dan pertanyaan akan mengembalikan hasil yang dijangkakan.
Nota Tambahan tentang BSON dan JSON Teg:
Teg bson dan json digunakan untuk menentukan cara medan struct Go dipetakan kepada dokumen MongoDB dan data JSON, masing-masing. Teg bson menentukan nama medan dalam dokumen BSON dan teg json menentukan nama medan dalam data JSON.
Jika anda tidak menentukan teg, nama medan dalam struct akan digunakan secara lalai. Walau bagaimanapun, menggunakan teg membolehkan anda menyesuaikan nama medan untuk keserasian dengan sistem atau konvensyen lain.
Atas ialah kandungan terperinci Mengapa pertanyaan mgo Golang saya mengembalikan objek pengguna kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!