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

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

我想使用查询(可能是GQL?)从我的谷歌应用引擎数据存储中获取KINDS 列表。例如,简单地显示数据库表的方式。

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

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

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

如有任何指点,我们将不胜感激。

最佳答案

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

SELECT * FROM __kind__

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

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

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

此外,由于 property_representation 值对于诸如 Dates 与 Integers 之类的东西是重载的,因此您只能使用类型数据作为基础类型的猜测,可能使用约定。当您浏览数据时,您可以更新类型信息。奇怪的是,没有更好的方法,因为当您创建实体的新实例时,Google 的数据存储 UI 会提供类型信息。

关于php - 有没有办法使用查询获取所有谷歌数据存储区 "KIND"的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552748/

相关文章:

mysql - Google 应用引擎 - 将网站用户表从数据存储迁移到 mysql (CloudSQL)

google-app-engine - Google App Engine - 将现有的 NDB 属性升级为重复的结构化属性

php - Laravel 每十分钟不工作

php - 如何在 SQLite 中获取最后一个插入 ID?

php - 带有 SSL 证书的网站

python - 本地开发服务器的谷歌应用程序引擎没有终端输出?

python - 从另一个 Cloud 项目调用 Firestore 数据库显示 "Permission Error"

java - 并发写入 GAE 数据存储实体的不同属性

google-app-engine - App Engine 数据存储区查询,对许多索引

php - 加载每个 friend 的帖子