我正在尝试对数据存储区中的一组实体执行过滤器查询,但是我要使用相等运算符查询的实体字段的类型为[]
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秒钟以编程方式重试后也是如此,因此我认为这不是数据存储与我存储在其中的视图数据之间最终一致性的问题。
您的主要问题的答案是“否”,因为[] byte存储为blob,但App Engine数据存储区未对其进行索引。
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
问题内容: 我正在尝试决定是否应针对App引擎关联的Android项目使用App引擎搜索API或数据存储区。Google文档的唯一区别是 …索引搜索最多只能找到10,000个匹配的文档。App Engine数据存储区可能更适合需要检索非常大的结果集的应用程序。 鉴于我已经非常熟悉数据存储区:假设我不需要10,000个结果,有人可以帮我吗? 是否有任何优势,利用与使用数据存储为我的查询(根据上面的报
问题内容: 我在Google App Engine数据存储区中为数据库模型创建了一个新属性。 旧: 新: 如何查询未设置“ is_approved”值的徽标记录?我试过了 但这没用。在数据查看器中,新字段值显示为。 问题答案: 据有关App Engine文档查询和索引,也有实体之间的区别 没有 一个属性值,以及那些具有 空 值,它; 和“没有筛选属性的实体永远不会由查询返回”。因此,不可能为这些旧
问题内容: 我正在尝试使用他们的电子邮件地址在appengine数据存储区中查找用户。我正在使用Go。 此代码找不到任何用户。 如果我更改查询以使用“ Id”属性查找用户,则可以正常工作。 我已经确认“ AccountEmail”的属性名称和值正确。“ AccountEmail”它也被索引。 为了使查询正常工作,是否需要使用电子邮件地址进行某些特殊格式设置? 问题答案: 为了通过电子邮件()查找用
问题内容: 我们有一些代码根据其坐标之间的距离对地址列表进行排序。这是通过使用自定义比较器的collections.sort完成的。 但是,列表中有时不包含地址,这会导致NullPointerException。解决这个问题的最初想法是让比较器返回至少0个坐标为零的地址的距离。我担心这可能导致列表中“有效”元素的顺序损坏。 因此是否可以在比较器中为空数据返回“ 0”值,还是有一种更干净的方法来解决
问题内容: 目前我正在使用这样的东西: 但是事实证明,AppEngine上的数据存储区中的ID不是从1开始的。我在数据存储区中有两个图像,其ID为6001和7001。 有没有更好的方法来检索随机图像? 问题答案: 数据存储是分布式的,因此ID是非顺序的:两个数据存储节点需要能够同时生成ID而不会引起冲突。 要获得随机实体,可以在创建时将0到1之间的随机浮点数附加到每个实体。然后进行查询,执行以下操
问题内容: 这应该是一个相当普遍的要求,并且是一个简单的过程:将数据批量上传到Appengine数据存储区。 但是,在stackoverflow上提到的较旧的解决方案(下面的链接*)似乎都不再起作用。使用DB API上传到数据存储区时,bulkloader方法是最合理的解决方案,不适用于NDB API 现在,bulkloader方法似乎已被弃用,文档中仍然存在的旧链接导致错误的页面。这是一个例子