4
我有一個字符串(〜180字符長度)爲datastore.ByteString類型,我希望它被索引,以便能夠按類型進行過濾。無法索引的數據存儲BLOB
keys, err := datastore.NewQuery("User").
Filter("SubscriptionToken= ", []byte(subscriptionToken)).Count(c)
當我試圖篩選我得到這個錯誤:
{Service:"datastore_v3", Detail:"Property \"SubscriptionToken\" has a value meaning BLOB that cannot be indexed.", Code:1}
,我想唯一的原因是字節串的大小大於1500K更大,它可以」被索引?
但我不知道如何檢查字節串的大小。
UPDATE:我這是怎麼插入用戶實體
type User struct {
UserEmail string
SubscriptionToken datastore.ByteString
}
//subscriptionToken has value
u := User{
UserEmail: userEmail,
SubscriptionToken: datastore.ByteString(subscriptionToken),
}
k := datastore.NewKey(c, "User", userKey, 0, nil)
_, err = datastore.Put(c, k, &u)
if err != nil {
log.Debugf(c, "Write datastore.Put: %#v ", err)
return err
}
現在即時得到這個錯誤 datastore.NewQuery返回的錯誤:errors.errorString {S:「數據存儲:BA d查詢過濾器值類型:不支持的數據存儲區值類型:datastore.ByteString「} – MIkCode
此ByteString(subscriptionToken))必須是datastore.ByteString(subscriptionToken)才能編譯? – MIkCode
@MIkCode好的,我試過了代碼,在過濾的時候,你必須指定一個'[] byte'類型的值。發佈的代碼現在可用。 – icza