GRPC代码9在时间上失败了前提条件。使用Go客户端

时间:2016-08-11 16:28:15

标签: google-cloud-datastore

我使用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,它看起来并不像是处理合成文字。也许这就是问题?

1 个答案:

答案 0 :(得分:0)

多个属性的过滤器需要定义索引。你应该有一个index.yaml文件,其中包括:

indexes:
  - kind: UserWidget
    properties:
    - name: user
    - name: updated

应该包含在错误消息中;不幸的是,bug阻止了这种情况的发生。