google-app-engine – Golang – 使用[]字节比较的Appengine数据存储过滤器查询

我正在尝试对数据存储区中的一组实体执行过滤器查询,但我尝试使用等于运算符查询的实体字段的类型为[] byte,我不知道appengine数据存储区是否可以执行这个比较

这是我的实体:

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秒的程序中重新编程,因此我不相信这是数据存储区与我存储在那里的视图数据之间最终一致性的问题.

我的主要问题是:appengine数据存储区是否允许查询在类型为[] byte的字段上使用比较过滤器?

最佳答案
您的主要问题的答案是否,因为[]字节存储为blob,而不是由应用引擎数据存储区索引.

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

转载注明原文:google-app-engine – Golang – 使用[]字节比较的Appengine数据存储过滤器查询 - 代码日志