काल्पनिक (एक और struct में struct embedding), मैं एक API चलाने के लिए और जब कोई उपयोगकर्ता उपयोगकर्ता संसाधन पर GET अनुरोध करता है, मैं एक JSONGolang + MongoDB एम्बेडेड प्रकार
type User struct {
Id bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Secret string `json:"-,omitempty" bson:"secret,omitempty"`
}
के रूप में प्रासंगिक क्षेत्रों वापस आ जाएगी जैसा कि आप देख सकते हैं, उपयोगकर्ता में गुप्त क्षेत्र में json:"-"
है। इसका तात्पर्य है कि अधिकांश ऑपरेशन में मैं वापस नहीं लौटना चाहूंगा। इस मामले में, एक प्रतिक्रिया होगी
{
"id":1,
"Name": "John"
}
क्षेत्र गुप्त json:"-"
के रूप में लौटाया नहीं जाएगा क्षेत्र अस्वीकार करते हैं।
अब, मैं केवल एक व्यवस्थापक खोल रहा हूं जहां मैं गुप्त क्षेत्र वापस करना चाहता हूं। हालांकि, इसका मतलब उपयोगकर्ता संरचना को डुप्लिकेट करना होगा।
मेरे वर्तमान समाधान इस तरह दिखता है:
type adminUser struct {
Id bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Secret string `json:"secret,omitempty" bson:"secret,omitempty"`
}
वहाँ adminUser में उपयोगकर्ता एम्बेड करने के लिए एक तरीका है? की तरह विरासत का प्रकार:
type adminUser struct {
User
Secret string `json:"secret,omitempty" bson:"secret,omitempty"`
}
ऊपर वर्तमान में केवल क्षेत्र रहस्य के रूप में काम नहीं करता, इस मामले में लौटा दी जाएगी।
नोट: वास्तविक कोड बेस में, कुछ दर्जन फ़ील्ड हैं। इस प्रकार, डुप्लिकेटिंग कोड की लागत अधिक है।
वास्तविक मोंगो क्वेरी नीचे है:
func getUser(w http.ResponseWriter, r *http.Request) {
....omitted code...
var user adminUser
err := common.GetDB(r).C("users").Find(
bson.M{"_id": userId},
).One(&user)
if err != nil {
return
}
common.ServeJSON(w, &user)
}
इस मामले में, मुझे रनटाइम त्रुटि मिल रही है: आंतरिक सर्वर त्रुटि संरचना main.adminUser में डुप्लिकेट कुंजी 'गुप्त'! – samol
मेरा जवाब अपडेट किया गया। मुझे एहसास नहीं हुआ कि डुप्लिकेट कुंजी शामिल थीं। –
रिकॉर्ड के लिए एक साइड नोट के रूप में, _ ", इनलाइन" _ टैग का उपयोग सामान्य फ़ील्ड (गैर-एम्बेडेड/गैर-अज्ञात) के लिए भी काम करता है। –