【问题标题】:Google Cloud Datastore REST API v1 (gqlQuery)谷歌云数据存储 REST API v1 (gqlQuery)
【发布时间】:2017-02-07 11:48:52
【问题描述】:

有人可以指导我了解如何使用 runQuery 方法使用 Google Cloud Datastore REST API v1 执行 gqlQuery 的语法。我只需要了解 REST API 的查询结构的帮助,不需要 Google OAUTH 或设置 Cloud Datatore 的帮助。我在下面包含了一个文档链接,例如要运行的 gqlQuery 和 Cloud Datastore 结构。

方法:projects.runQuery https://cloud.google.com/datastore/docs/reference/rest/v1/projects/runQuery

Example gqlQuery = ("Select * From Customer")

Google 数据存储结构示例

   id = "78090499534213120" 
   Address = "888 Fake St"
   City = "Fake City"
   FirstName = "Name"
   LastName = "Name"
   State = "CT"

【问题讨论】:

    标签: database rest google-cloud-datastore google-cloud-platform gql


    【解决方案1】:
    POST https://datastore.googleapis.com/v1/projects/{YOUR_PROJECT_ID}:runQuery?key={YOUR_API_KEY}
    

    {YOUR_PROJECT_ID} 可以在您的项目的 Cloud Console 主页上找到,并且是字母数字。

    消息的正文将是一个带有查询详细信息的 JSON 字符串,因此在您的情况下:

    {
     "gqlQuery":{"queryString": "select * from customer"}
    }
    

    如果你想包含条件,你也可以通过使用参数绑定来做到这一点。下面的例子展示了如何使用位置绑定来实现这一点:

    {
       "gqlQuery":
       {
          "queryString": "select * from Customers where State = @1 AND FirstName = @2",
          "positionalBindings": [
             {"value": {"stringValue": "CT"}}.
             {"value": {"stringValue": "Name"}}
          ]
       }
    }
    

    除了位置绑定,您还可以使用命名绑定:

    {
       "gqlQuery":
       {
          "queryString": "select * from Customers where State = @State AND FirstName = @FirstName",
          "namedBindings": {
              "State": {"value": {"stringValue": "CT"}},
              "FirstName": {"value": {"stringValue": "Name"}}
          }
       }
    }
    

    最后,不推荐,因为它可能导致查询注入攻击,您可以通过设置适当的标志在查询字符串本身中包含文字:

    {
       "gqlQuery":
       {
          "queryString": "select * from Customers where State = 'CT' AND FirstName = 'Name'",
          "allowLiterals": true
       }
    }
    

    【讨论】:

      【解决方案2】:

      当您提出此请求时,您是否得到了适当的回复?我收到以下 200 响应,但没有看到任何预期的数据行

      { “批”: { "entityResultType": "投影", "endCursor": "CgA=", “更多结果”:“NO_MORE_RESULTS” } }

      【讨论】:

        猜你喜欢
        • 2014-08-11
        • 2013-07-03
        • 2015-07-17
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 1970-01-01
        • 2017-01-22
        相关资源
        最近更新 更多