google app engine - गोलांग-[] बाइट तुलना के साथ ऐपेंजिनिन डेटास्टोर फ़िल्टर क्वेरी




google-app-engine filter (2)

मैं डेटास्टोर में संस्थाओं के सेट पर एक फिल्टर क्वेरी करने की कोशिश कर रहा हूं, लेकिन एंटिटी फ़ील्ड मैं समानता ऑपरेटर के साथ, क्वेरी के लिए कोशिश कर रहा हूं, प्रकार [] बाइट की है और मुझे नहीं पता है कि एपेंगइन डेटास्टोर प्रदर्शन कर सकता है यह तुलना

यह मेरी संस्था है:

type Data struct {
 Id          int64  `json:"id"`
 Version     int32  `json:"-"`
 HMAC        []byte `json:"-"`
 Status      string `json:"status"`
}

और यहाँ मेरी क्वेरी तर्क है

func (view *DataView) GetDataByHMAC(hmac []byte) (Data, error) {
    view_key := datastore.NewKey(view.context, "View", "data-view", 0, nil)
    data := make([]Data, 0)
    query := datastore.
       NewQuery("ViewData").
       Ancestor(view_key).
       Filter("HMAC = ", hmac)
    _, err := query.GetAll(view.context, &data)
    if err != nil {
       return Data{}, err
    }
    if len(data) == 0 {
       return Data{}, ErrNoData
    }
    return data[0], nil
}

यह प्रोग्राम बनाता है, लेकिन 10 सेकंड के पाठ्यक्रम पर कार्यक्रम के पुन: प्रयास करने के बाद भी कोई परिणाम नहीं लौटाता है, इसलिए मेरा मानना ​​नहीं है कि यह डेटास्टोर और उस दृश्य डेटा के बीच अंतिम स्थिरता का मुद्दा है जो मैंने वहां संग्रहीत किया है।

मेरा मुख्य प्रश्न यह है कि क्या एपेंजेन डेटास्टोर किसी प्रकार की [] बाइट के साथ फ़ील्ड पर एक तुलना फ़िल्टर का उपयोग करने के लिए क्वेरी के लिए अनुमति देता है?


1.9.11 में, ByteString पैकेज के लिए ByteString प्रकार पेश किया गया था। यह लघु, अनुक्रमित बाइट स्लाइस को संचय करने के लिए इस्तेमाल किया जा सकता है।

यदि आप अपनी संस्था को निम्न में बदलते हैं, तो उसे काम करना चाहिए:

type Data struct {
  ID      int64                `json:"id"`
  Version int32                `json:"-"`
  HMAC    datastore.ByteString `json:"-"`
  Status  string               `json:"status"`
}

अधिक जानकारी: https://developers.google.com/appengine/docs/go/datastore/entities#Go_Properties_and_value_types


आपके मुख्य प्रश्न का उत्तर नहीं है, क्योंकि [] बाइट को ब्लॉब के रूप में संग्रहित किया जाता है, जो एप इंजन डाटास्टोर द्वारा अनुक्रमित नहीं है।

queries with a filter or sort order on the unindexed property 
will never match that entity.
Note: In addition to any unindexed properties you declare explicitly, 
those typed as []byte are automatically treated as unindexed.

यहां दस्तावेज़ीकरण दिया गया है: https://developers.google.com/appengine/docs/go/datastore/indexes#Go_Unindexed_properties