Google 云数据存储 PropertyFilter 错误
Google Cloud Datastore PropertyFilter Error
我正在使用 google api 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
google 是要求的??
Datastore 查询中的过滤器通常要求您指定要检索的实体类型。与其将其传递给构造函数,不如将其设置为:
$query->setKinds(array('views'))
解决方案:
我确实需要按照 Ed Davisson 的建议使用 $query->setKinds()
方法,但是它不能只接受一个字符串。你需要给它 Google_Service_Datastore_KindExpression
对象
示例:
$views_kind= new Google_Service_Datastore_KindExpression;
$views_kind->setName("views");
$query->setKinds(array($views_kind));
我正在使用 google api 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
google 是要求的??
Datastore 查询中的过滤器通常要求您指定要检索的实体类型。与其将其传递给构造函数,不如将其设置为:
$query->setKinds(array('views'))
解决方案:
我确实需要按照 Ed Davisson 的建议使用 $query->setKinds()
方法,但是它不能只接受一个字符串。你需要给它 Google_Service_Datastore_KindExpression
对象
示例:
$views_kind= new Google_Service_Datastore_KindExpression;
$views_kind->setName("views");
$query->setKinds(array($views_kind));