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查询?
答案 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
}
}