Google Cloud Datastore PropertyFilter Error



我正在使用谷歌api php sdk,并试图从我的谷歌云数据存储访问一些数据。我在这一点上验证没有问题,但在我的查询中得到一个错误。我几乎通过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 ??

解决方案:

我确实需要使用$query->setKinds()方法作为Ed戴维森建议,但它不能只是采取一个字符串。你需要给它Google_Service_Datastore_KindExpression对象

的例子:

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

数据存储查询中的过滤器通常要求您指定想要检索的实体类型。不需要将其传递给构造函数,您可以使用以下方式设置它:

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

相关内容

  • 没有找到相关文章

最新更新