0

我正在 GCP 上开发我的数据存储,但我有 2 个问题,我是初学者,我不知道他们的 API。我的环境是PHP,我写了这个指令:

$datastore = new DatastoreClient(['keyFilePath' => 'myKey']);

我怎么知道连接准备好?我正在寻找例如:

if( $datastore->status_code === 200)

例如,200 代码已准备好。这个问题影响第二个问题。当我尝试从数据存储中获取一些信息时,如果我这样做了,Google 的响应会非常非常非常大var_dump($datastore),而且我迷路了,我的数据在哪里?响应包含有关小时、地理定位、浏览器等的信息。这是我的代码:

    $query = $datastore->query();
    $query->kind('foo');
    $result = $datastore->runQuery( $query );
    print_r( $result );

foo作为参数是我在数据存储中的类型。正如我所说的响应是一个非常大的对象,我怎样才能将它解析为 JSON 格式?

4

1 回答 1

0

如果您在使用 DatastoreClient 实例进行调用时没有收到任何错误,则说明您已成功通过身份验证。除了进行 API 调用外,没有单独的“测试连接”方法。

来自的响应runQuery不能直接序列化。由于查询可能会返回一个大的结果集,因此结果可能会被拆分为多个页面。Google Cloud PHP 会为您处理这个问题,但它会使响应的处理稍微复杂一些。

如果要对响应进行 json 序列化,可以使用iterator_to_array()

$json = json_encode(iterator_to_array($result));

使用它时你应该小心一点,因为如果你的查询匹配一个非常大的结果集,它可能会导致大量的 API 调用。

$result如果您需要对查询结果进行任何显示或处理,只需使用以下命令进行迭代foreach

foreach ($result as $row) {
    // Each `$row` will be an instance of `Google\Cloud\Datastore\EntityInterface`.
    print_r($row);
}
于 2018-05-29T00:42:43.980 回答