我使用rpc error: code = 9 desc =
客户端软件包获得cloud.google.com/go/datastore
(错误消息中没有' desc')。
我有一个结构:
type UserWidget struct {
ID string `datastore:"id"`
UserID string `datastore:"user"`
Widget string `datastore:"widget"`
Updated time.Time `datastore:"updated"`
}
我尝试对填充的数据存储区执行查询:
q := ds.NewQuery(userWidgetEntity)
q = q.Filter("user =", userID)
q = q.Filter("updated >", time.Now().Add(-1*duration))
如果更新的过滤器未设置,则查询执行正常,但如果失败,则上述错误失败。我还在数据存储区中看到数据,并将更新的字段列为索引。 GQL update < DATETIME()
查询也正确执行。我看了一下https://github.com/GoogleCloudPlatform/gcloud-golang/blob/master/datastore/query.go#L165,它看起来并不像是处理合成文字。也许这就是问题?
答案 0 :(得分:0)
多个属性的过滤器需要定义索引。你应该有一个index.yaml文件,其中包括:
indexes:
- kind: UserWidget
properties:
- name: user
- name: updated
应该包含在错误消息中;不幸的是,bug阻止了这种情况的发生。