【问题标题】:Datastore query returns no data when ordering result排序结果时数据存储查询不返回数据
【发布时间】:2017-12-06 10:13:31
【问题描述】:

我有一个带有字符串属性 Bar 的简单测试对象 Foo。当我执行 .GetAll("Foo") 查询时,我会返回所有对象,但是,当我添加 .Order("Bar") 时,不会返回任何内容。我尝试了使用和不使用 index.yaml 指定对象和属性,使用和不使用排序顺序。我错过了什么?我没有在 Bar 属性上使用“noindex”。

type Foo struct {
   Bar string
}

.NewQuery("Foo").Order("Bar").GetAll(c, &foo)  <-- nothing returned

.NewQuery("Foo").GetAll(c, &foo)  <-- objects returned

【问题讨论】:

  • 请为您的 Foo 结构以及插入(放置)和查询添加代码。
  • @icza 我就是这样做的。没有“noindex”属性。我在本地运行所有内容,即使我从一个空白数据存储开始,添加 1 条或多条记录,我仍然无法获得指定 .Order() 的任何记录。

标签: google-app-engine go google-cloud-datastore


【解决方案1】:

实体在插入时被索引。

  1. 确保您的结构字段没有 noindex 数据存储注释。
  2. 确保您的结构字段不会更改注释中的属性名称(注释。例如:

    条形字符串 // datastore:bar

  3. 确保您没有覆盖 PropertyLoadSaver,没有使属性不可索引,也没有更改名称。

  4. 签入数据存储查看器,您可以在属性上订购,因此您的 Put() 代码没有问题,并且您的查询可能有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多