尝试使用GDS访问Google Cloud Datastore

时间:2016-02-22 17:46:15

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

我使用Tom Walder的GDS PHP库访问Google数据存储区。

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

我真的很难让它发挥作用。如果有人能帮助我,我真的很感激!

2 个答案:

答案 0 :(得分:1)

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

如果你是从GAE&#34; web&#34;环境(如本地Web服务器或实时AppEngine)然后DATASET将由环境定义。

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

目前 - 尝试运行代码以响应网络请求(即来自http://localhost:8080/test.php - 或其他)

答案 1 :(得分:1)

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

如果您在计算引擎上运行,则需要使用“JSON”Google Gateway。

GitHub上应该有一些样本。