尝试使用 GDS 访问 Google Cloud Datastore


Trying to use GDS to access Google Cloud Datastore

我正在使用Tom Walder的GDS PHP库来访问Google Datastore。

https://github.com/tomwalder/php-gds

这是我的最新尝试:

require_once 'src/GDS/Entity.php';
require_once 'src/GDS/Gateway.php';
require_once 'src/GDS/Mapper.php';
require_once 'src/GDS/Schema.php';
require_once 'src/GDS/Store.php';
require_once 'src/GDS/Exception/Contention.php';
require_once 'src/GDS/Exception/GQL.php';
require_once 'src/GDS/Gateway/GoogleAPIClient.php';
require_once 'src/GDS/Gateway/ProtoBuf.php';
require_once 'src/GDS/Mapper/GoogleAPIClient.php';
require_once 'src/GDS/Mapper/ProtoBuf.php';
require_once 'src/GDS/Mapper/ProtoBufGQLParser.php';
require_once 'src/GDS/Property/Geopoint.php';
// Build a new entity
$obj_book = new GDS'Entity();
$obj_book->title = 'Romeo and Juliet';
$obj_book->author = 'William Shakespeare';
$obj_book->isbn = '1840224339';
// Write it to Datastore
$obj_store = new GDS'Store('Book');
$obj_store->upsert($obj_book);
$obj_store = new GDS'Store('Book');
foreach($obj_store->fetchAll() as $obj_book) {
    echo "Title: {$obj_book->title}, ISBN: {$obj_book->isbn} <br />", PHP_EOL;
}

这会产生此错误:

Fatal error: Uncaught exception 'Exception' with message 'Could not determine DATASET, please pass to GDS'Gateway'ProtoBuf::__construct()' in /var/www/html/src/GDS/Gateway/ProtoBuf.php:70 Stack trace: #0 /var/www/html/src/GDS/Store.php(81): GDS'Gateway'ProtoBuf->__construct() #1 /var/www/html/test.php(32): GDS'Store->__construct('Book') #2 {main} thrown in /var/www/html/src/GDS/Gateway/ProtoBuf.php on line 70

我正在努力让它工作。如果你们中的任何人能帮助我,我将不胜感激!

看起来您正在尝试从命令行运行此脚本?

如果您从 GAE"Web"环境(如本地 Web 服务器或实时 AppEngine)运行它,则数据集将由环境定义。

能确切地确认您尝试如何使用该库吗?然后我可以给你指点。

现在 - 尝试运行您的代码以响应 Web 请求(即来自 http://localhost:8080/test.php - 或其他任何请求)

是的,我是图书馆的作者。

如果你在计算引擎上运行,你需要使用"JSON"谷歌网关。

GitHub上应该有一些示例。