google app engine - Datastore BLOB that cannot be indexed -
i have string (~180 chars length) datastore.bytestring type, want indexed able filter type.
keys, err := datastore.newquery("user"). filter("subscriptiontoken= ", []byte(subscriptiontoken)).count(c) when i'm trying filter i'm getting error:
{service:"datastore_v3", detail:"property \"subscriptiontoken\" has value meaning blob cannot indexed.", code:1} the reason think size of bytestring greater 1500k , can't indexed?
but can't figure out how check bytestring size.
update: how insert user entity
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 }
the error message indicates user entity have in datastore has property subscriptiontoken not of type bytestring rather []byte.
properties of type []byte not indexed.
if want property of type byte slice indexed, when save entity, property must have value of type datastore.bytestring, example:
type user struct { subscriptiontoken datastore.bytestring } u := user{subscriptiontoken: datastore.bytestring("somevalue")} // save u key, err := datastore.put(c, datastore.newincompletekey(c, "user", nil), &u) if err != nil { // handle error } datastore.bytestring byte slice ([]byte) , nothing more (at moment): signals want the byte slice being saved indexed.
and when try filter property, property value filter has value of type []byte:
q := datastore.newquery("user").filter("subscriptiontoken=", []byte(subscriptiontoken)) // if want count: count, err := q.count(c) if err != nil { // handle error } // query/filter: var users []*user keys, err := q.getall(c, &users) if err != nil { // handle error } btw check length of bytestring value, can use builtin function len() since bytestring byte slice ([]byte):
length := len(u.subscriptiontoken)
Comments
Post a Comment