有没有办法获得所有谷歌数据存储的列表" KIND"使用查询

时间:2016-01-01 00:44:39

标签: php google-app-engine google-cloud-datastore gql

我想使用查询(KINDS可能?)从我的Google应用引擎数据存储区获取GQL列表。例如,人们只需show tables数据库。

我已经查看了类似的问题(How to list kinds in datastore?),但它并没有解决我的问题,因为它是特定于python的。

我目前正在使用PHP中的GDS库(https://github.com/tomwalder/php-gds),如果我使用"SELECT * FROM Kind" GQL查询知道实体名称,它可以帮助我从GDS获取数据。

我目前处于这样一种情况:我可能不知道我需要获取数据的实体KIND的名称因此需要获取实体KINDS列表然后我可以查看并确认实体是否存在,然后运行我的选择查询。

任何指针都会非常感激。

2 个答案:

答案 0 :(得分:2)

您可以使用ndb的元数据对象查询它们。

this post by Jonathan Lewis.

答案 1 :(得分:2)

这是基于GQL的替代方法...这将返回可用种类的列表:

SELECT * FROM __kind__

理论上,您可以通过列出给定种类的相关属性(例如,Person)来获取此对象的模式:

SELECT * FROM __property__
WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Person')

如果您使用Google的库发出这些查询,则必须在请求中设置 AllowLiterals = true 属性,以避免出现错误详细信息{{1 }}

此外,由于Dates vs Integers之类的Disallowed literal: KEY值被重载,因此您只能使用类型数据作为底层类型的猜测,可能使用约定。在浏览数据时,您可以更新类型信息。奇怪的是,由于Google的数据存储区UI在您创建实体的新实例时提供了类型信息,因此没有更好的方法。