2013-08-16 6 views
9
यहाँ

मेरी struct है:डेटासंग्रह को (golang) मेरी struct डाल करने में विफल

type AreaPrerequisite struct { 
    SideQuestId int // 
    SideQuestProg int // progress 
} 

type AreaInfo struct { 
    Id    int    `datastore:""` 
    Name    string   `datastore:",noindex"` 
    ActionPoint  int    `datastore:",noindex"` 
    Prerequisite  AreaPrerequisite `datastore:",noindex"` 

    // ignored: 
    DsMonsters  []byte   `datastore:"-"` 
    DsStages   []byte   `datastore:"-"` 
    Monsters   AreaMonsters  `datastore:"-"` 
    Stages   []*StageEntry `datastore:"-"` 
} 

और मेरे पुट() कॉल:

key := datastore.NewKey(c, "Area", "", int64(pArea.Id), nil) 
_, err := datastore.Put(c, key, *pArea) 
if err != nil { 
    return err 
} 

यह जब कोशिश करने के लिए डाल करने के लिए मेरा पीछा त्रुटि देता है डी एस:

datastore: invalid entity type 

मैं दस्तावेज़ जाँच: https://developers.google.com/appengine/docs/go/datastore/reference

डेटास्टोर: "-" डेटास्टोर द्वारा अनदेखा कुछ गैर-समर्थित फ़ील्ड को चिह्नित करना चाहिए। पता नहीं क्यों यह असफल रहा है।

+0

इससे पहले कि आप एक ही तरह से पहले "क्षेत्र" के साथ कुछ डेटा डाल दिया है? यदि आपने कुछ डेटा डालने के बाद अपना 'स्ट्रक्चर' अपडेट किया है, तो दो प्रस्तुतियां संघर्ष कर सकती हैं और एक त्रुटि उत्पन्न कर सकती हैं। – val

उत्तर

15

मुझे पता चला कि मैंने गलती से * पेरे में डालने के लिए तर्क दिया है() ताकि यह पॉइंटर के बजाय एक मान गुजर रहा हो, जिससे अवैध इकाई प्रकार त्रुटि हो।

+0

धन्यवाद, यह मुझे भी बचाया। – Jacob

+0

महोदय, आपने मुझे भी बचाया। – Ali

+0

मुझे एक ही समस्या का सामना करना पड़ा, लेकिन प्रॉपर्टीलिस्ट का उपयोग करना। जाहिर है अगर आप एक प्रॉपर्टीलिस्ट में पास करते हैं तो उसे एक सूचक नहीं होना चाहिए। http://stackoverflow.com/q/30792119/101923 –

4

मैंने भी उसी समस्या में भाग लिया है, मेरे मामले में मैंने & को इकाई को डालने से पहले नहीं रखा था।

key := datastore.NewKey(c, "Area", "", int64(pArea.Id), nil) 
_, err := datastore.Put(c, key, &pArea) 
if err != nil { 
    return err 
} 

सूचना &&pArea

+1

यह काफी उपयोगी था। मैंने वास्तव में वस्तु निर्माण के लिए जोड़ा और फिर, इसे पुट कॉल में छोड़ा जा सकता है। E.G. myObj: = और MyObj {} बनाम myObj: = MyObj {} –

संबंधित मुद्दे