【问题标题】:where clause does not work in GAE datastore viewerwhere 子句在 GAE 数据存储查看器中不起作用
【发布时间】:2014-08-06 10:55:42
【问题描述】:

我是GAE的新手,请原谅我的幼稚。

使用 where 子句的数据存储查看器查询返回“空命名空间中没有结果。”。

例如: 从 GaeUser 中选择 * 返回所有整数。

类似的,
从 GaeUser 中选择 * 其中 firstName = 'somename' 或者 从 GaeUser 中选择 *,其中 dayOfBirth = 5 只返回消息 No 结果为空的命名空间。

我期待一些关于如何调试它的指示。

感谢您阅读本文!

【问题讨论】:

    标签: google-cloud-datastore


    【解决方案1】:

    只是你写了一个不正确/拼写错误的查询。

    请注意,GAE 数据存储是无模式的。为不存在的实体或不存在的属性编写查询或指定使用不正确数据类型的过滤条件不会导致错误,而是会导致空结果。

    无模式也意味着相同类型的 2 个实体可能具有不同类型的相同属性。例如,您可能有一个Person 实体,其age 属性类型为int,另一个Person 具有age 属性类型String。显然在这种情况下,如果你写类似

    select * from Person where age='5'
    

    不会返回具有age=5 属性的人具有int 类型。

    所以只需仔细检查实体和属性的名称和类型,然后再试一次。

    另一个重要提示:

    默认情况下,属性被索引。这意味着在保存实体时,将自动创建并保存索引属性的索引记录,这使您可以通过该索引属性找到该实体。属性可以无索引。当您保存具有未索引属性的实体时,将不会保存此未索引属性的索引记录(或者如果有,它们将被删除),您将无法通过此未索引属性查询/查找此实体。

    【讨论】:

    • 嗨.. 感谢您的回复。我当然交叉检查了拼写,似乎没问题。名字值:斯蒂芬类型:字符串
    • 您可能尝试按 未索引 属性进行搜索。请参阅我编辑的答案。
    • 非常感谢。是的,确实,我查询的属性没有被索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多