Ошибка PropertyFilter Google Cloud Datastore

Я использую Google Apis php SDK и пытаюсь получить доступ к некоторым данным из моего облачного хранилища данных Google. На этом этапе я не проверяю подлинность, но получаю сообщение об ошибке. Я в значительной степени просматриваю код в SDK для его реализации, так как документация пуста, но нет ничего, что намекает на то, почему я получаю эту ошибку.

Вот мой код:

    $run_query = new Google_Service_Datastore_RunQueryRequest;                                                                                                                 15
$query     = new Google_Service_Datastore_Query;
$query->setKinds(array("views"));                                                                                                                  16
$query_filter = new Google_Service_Datastore_Filter;                                                                                                                       17
$query_property_filter = new Google_Service_Datastore_PropertyFilter;                                                                                                      18
$query_property_filter->setOperator('EQUAL');                                                                                                                              19
$query_property_ref    = new Google_Service_Datastore_PropertyReference;                                                                                                   20
$query_property_ref->setName('_IS_ACTIVE');                                                                                                                                21
$query_property_val    = new Google_Service_Datastore_Value;                                                                                                               22
$query_property_val->setBooleanValue(true);                                                                                                                                23
$query_property_filter->setProperty($query_property_ref);                                                                                                                  24 class Google_Model implements ArrayAccess
$query_property_filter->setValue($query_property_val);                                                                                                                     25 {
$query_filter->setPropertyFilter($query_property_filter);                                                                                                                  26
$query->setFilter($query_filter);                                                                                                                                          27
$run_query->setQuery($query);                                                                                                                                              28     null.
29
$views = $datastore->datasets->runQuery('my-project-id', $run_query);

Вот ошибка, которую я получаю:

Google_Service_Exception [ 500 ]: Error calling POST https://www.googleapis.com/datastore/v1beta2/datasets/my-project-id/runQuery: (400) kind is required for filter: _IS_ACTIVE

Где я могу добавить это kind гугл просит ??

0

Решение

Фильтры в запросах хранилища данных обычно требуют указания типа сущностей, которые вы хотите получить. Вместо того, чтобы передавать его в конструктор, вы можете установить его с помощью:

$query->setKinds(array('views'))

1

Другие решения

Решение:

Мне нужно было использовать $query->setKinds() метод, как предложил Эд Дэвиссон, однако он не может просто взять строку. Вы должны дать ему Google_Service_Datastore_KindExpression объект

Пример:

$views_kind= new Google_Service_Datastore_KindExpression;
$views_kind->setName("views");
$query->setKinds(array($views_kind));
1

По вопросам рекламы [email protected]