首页 文章

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

提问于
浏览
0

我想从我的谷歌应用引擎数据存储区使用查询获取 KINDS 列表( GQL 也许?) . 例如,人们只需要数据库的方式 .

我看过一个类似的问题(How to list kinds in datastore?),但它并没有解决我的问题,因为它是特定于python的 .

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

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

任何指针都将非常感激 .

2 回答

  • 2

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

    https://cloud.google.com/appengine/docs/python/ndb/metadata#get_kinds

  • 1

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

    SELECT * FROM __kind__
    

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

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

    如果您使用Google的库发出这些查询,那么您必须在请求中设置 AllowLiterals = true 属性,以避免出现带有错误详细信息 Disallowed literal: KEY 的异常 .

    此外,由于 property_representation 值因Dates vs Integers之类的内容而被重载,因此您只能使用类型数据作为底层类型的猜测,可能使用约定 . 当您浏览数据时,您可以更新类型信息 . 它是一种更好的方式,因为Google的数据存储区UI在您创建实体的新实例时提供类型信息 .

相关问题