Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membenamkan Struct dalam Struct Lain dengan MongoDB di Golang Tanpa Kehilangan Data?

Bagaimana untuk Membenamkan Struct dalam Struct Lain dengan MongoDB di Golang Tanpa Kehilangan Data?

Susan Sarandon
Susan Sarandonasal
2024-11-08 18:28:02504semak imbas

How to Embed a Struct in Another Struct with MongoDB in Golang Without Losing Data?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn