使用Google Cloud Datasore进行GQL查询

时间:2016-09-08 09:44:56

标签: google-cloud-datastore gql

Google Datastore Runquery为http客户端提供执行GQL查询,如下所示:

POST https://datastore.googleapis.com/v1/projects/my-project-id:runQuery?key={YOUR_API_KEY}

{
 "gqlQuery": {
  "queryString": "SELECT * FROM User WHERE email = 'user@example.com'"
 }
}

但我得到错误回复,如:

{
  "error": {
    "code": 400,
    "message": "Disallowed literal: 'user@example.com'.",
    "status": "INVALID_ARGUMENT"
  }
}

但是,Google Cloud Datastore Http Client'Select * from User'等简单查询完美配合。

那么,如何使用Datastore Http客户端执行此GQL查询?

1 个答案:

答案 0 :(得分:2)

您必须将allowLiterals参数设置为true或使用绑定参数(命名或位置)。

请参阅以下文档:

https://cloud.google.com/datastore/reference/rest/v1/projects/runQuery#GqlQuery

因此,如果要在查询中允许文字(常量值),则应将请求更改为

{
 "gqlQuery": {
  "queryString": "SELECT * FROM User WHERE email = 'user@example.com'"
  "allowLiterals": true
 }
}