【问题标题】:Error every time I run datastore.runQuery: one of fields Query.query and Query.gql_query must be set每次运行 datastore.runQuery 时出错:必须设置 Query.query 和 Query.gql_query 字段之一
【发布时间】:2015-09-14 16:01:15
【问题描述】:

我正在尝试使用 google-api-nodejs-client 对我的 Google Cloud 数据存储运行一个简单的查询。我想查询与给定种类匹配的所有实体。当我使用the "Try it now" tool 运行此查询时,它工作正常:

Request

POST https://www.googleapis.com/datastore/v1beta2/datasets/healthier-staging/runQuery?key={YOUR_API_KEY}

{
 "query": {
  "kinds": [
   {
    "name": "Subscriber"
   }
  ]
 }
}

Response

200 OK

{
 "batch": {
  "entityResultType": "FULL",
  "entityResults": [
   {
    "entity": {
     "key": {
      "partitionId": {
       "datasetId": "s~healthier-staging"
      },
      "path": [
       {
        "kind": "Subscriber",
        "name": "+1215XXXXXXX"
       }
      ]
     },
     "properties": {
...

我能够使用我的凭据进行身份验证、创建交易等,因此我知道这不是身份验证问题。

这是我试图在 Node 中运行的代码:

this.datastore.runQuery({
    datasetId: 'healthier-staging',
    query: {
        kinds: [{name: 'Subscriber'}]
    },
}, (function(err, result) {
    if (err) {
        console.error(err);
        return;
    }
}).bind(this));

当我尝试使用 Node 模块运行相同的查询时,我收到此错误:

{ [Error: one of fields Query.query and Query.gql_query must be set]
  code: 400,
  errors: 
   [ { domain: 'global',
       reason: 'INVALID_ARGUMENT',
       message: 'one of fields Query.query and Query.gql_query must be set' } ] }

这没有意义,因为我已经指定了query 字段。我尝试了各种各样的事情:删除datasetId(产生关于需要datasetId的错误),改用gql_query(同样的错误),将datasetId封装在事务中并将其传递给readOptions等。

这是一个错误还是我在做一些愚蠢的事情?

谢谢!

【问题讨论】:

    标签: javascript node.js google-app-engine google-cloud-datastore google-api-nodejs-client


    【解决方案1】:

    我在您的other StackOverflow question 中提到了这一点,但您的请求应包含在资源部分:

    this.datastore.runQuery({
        datasetId: 'healthier-staging',
        resource: {
            query: {
                kinds: [{name: 'Subscriber'}]
            },
        },
    }, (function(err, result) {
        if (err) {
            console.error(err);
            return;
        }
    }).bind(this));
    

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2010-09-13
      • 1970-01-01
      相关资源
      最近更新 更多