standard how google gae flexible engine docs compute appengine app google-app-engine go filter byte google-cloud-datastore

google-app-engine - how - google app engine gae



Golang-Consulta de filtro de almacén de datos de Appengine con comparación de bytes de (2)

Intento realizar una consulta de filtro en un conjunto de entidades en el almacén de datos, pero el campo de entidad con el operador de igualdad que intento consultar, es de tipo [] byte y no sé si el almacén de datos appengine puede realizar esta comparación

Esta es mi entidad:

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

Y aquí está mi lógica de consulta

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 }

Construye pero no devuelve ningún resultado, incluso después de reintentarlo programáticamente en el transcurso de 10 segundos, por lo que no creo que sea un problema de consistencia entre el almacén de datos y los datos de vista que he almacenado allí.

Mi pregunta principal es: ¿el almacén de datos appengine permite una consulta para usar un filtro de comparación en un campo con tipo [] byte?



La respuesta a su pregunta principal es No, porque el byte [] se almacena como blob, que no está indexado por el datastore del motor de la aplicación.

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.

Aquí está la documentación: https://developers.google.com/appengine/docs/go/datastore/indexes#Go_Unindexed_properties