Membenamkan Struktur dalam Struktur Lain di Golang dengan MongoDB
Di Golang, membenamkan struct dalam struct lain membolehkan anda mewarisi medan daripada struktur tertanam. Walau bagaimanapun, anda mungkin menghadapi masalah apabila bekerja dengan struktur terbenam dan MongoDB, yang berpotensi membawa kepada kehilangan data medan terbenam.
Memahami Isu
Pertimbangkan senario di mana anda perlu menyediakan respons JSON yang berbeza untuk sumber pengguna berdasarkan peranan pengguna. Satu respons termasuk medan "Rahsia", yang sepatutnya hanya dipaparkan kepada pentadbir.
Dalam kod semasa anda, anda telah mencipta struct berasingan untuk Pengguna dan adminUser, dengan yang terakhir mengandungi medan "Rahsia". Walau bagaimanapun, membenamkan Pengguna ke dalam adminUser menggunakan warisan (taip adminUser struct { User; Secret string }) tidak berfungsi seperti yang diharapkan.
Penyelesaian
Untuk menyelesaikan isu ini, anda boleh menggunakan bendera "sebaris" pakej bson. Dengan menggunakan bson:",inline", anda boleh menyelaraskan medan struct terbenam ke dalam struct induk.
type adminUser struct { User `bson:",inline"` Secret string `json:"secret,omitempty" bson:"secret,omitempty"` }
Pendekatan ini membolehkan anda mengakses kedua-dua medan struct Pengguna dalam struct adminUser.
Pertimbangan Tambahan
Perhatikan bahawa menggunakan bson:",inline" boleh membawa kepada ralat kunci pendua apabila membaca daripada pangkalan data, kerana kedua-dua struct mengandungi medan "Rahsia". Untuk mengelakkan ini, adalah disyorkan untuk mengalih keluar medan "Rahsia" daripada struct Pengguna dan hanya memasukkannya dalam struct adminUser. Ini memastikan bahawa medan "Rahsia" hanya boleh diakses melalui struct adminUser, memberikan tahap kawalan yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Membenamkan Struct dalam Struct Lain dengan MongoDB di Golang Tanpa Kehilangan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!