我正在开发一个Go应用程序,其中我有一个实体,其中包含一个包含识别标记的属性,该标识是一个随机的字节字符串。我将此属性存储为ByteString,并且在我的开发环境中,我已经能够使用以下形式的过滤器来查询此属性:
// token is a []byte
idTok := datastore.ByteString(token)
q := ds.NewQuery("Entity").Filter("IDToken =", idTok)
var entities []Entity
keys, err := q.GetAll(c, &entities)
但不幸的是,当作为模块部署到GAE时,此查询返回错误:datastore: bad query filter value type: unsupported datastore value type: datastore.ByteString
,这令人困惑,因为我认为ByteString类型的目的是能够索引更少量的二进制数据500字节。
我首先根据这个SO问题的第二个答案切换到使用ByteString类型:Golang - Appengine datastore filter query with []byte comparison
答案 0 :(得分:0)
此问题在一周后解决了。由于它只出现在模块环境中,我猜测它们的某些代码尚未更新以支持ByteString类型,现在是。现在很棒!