where子句在GAE数据存储区查看器中不起作用

时间:2014-08-06 10:55:43

标签: google-cloud-datastore

我是GAE的新手,请原谅我是天真的。

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

例如: 从GaeUser中选择* 返回所有的entires。

类似的东西,
从GaeUser中选择*,其中firstName =' somename' 要么 从GaeUser中选择*,其中dayOfBirth = 5 只返回消息No results in empty namespace。

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

感谢您阅读此内容!!

1 个答案:

答案 0 :(得分:1)

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

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

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

这样的东西
select * from Person where age='5'

不会返回age=5属性为int的人。

因此,只需仔细检查实体和属性的名称和类型,然后重试。

另一个重要说明:

默认情况下,属性已编入索引。这意味着在保存实体时,将自动创建并保存索引属性的索引记录,这允许您通过此索引属性查找此实体。属性可以 unindexed 。当您使用未编入索引的属性保存实体时,将不会为此未编制索引的属性保存索引记录(或者如果有任何索引记录将被删除),您将无法通过此未索引的属性查询/查找此实体。 / p>