0

Я пытаюсь запустить простой запрос в отношении хранилища данных Google Cloud с помощью google-api-nodejs-client. Я хочу запросить все сущности, соответствующие данному виду. Когда я запускаю этот запрос, используя the "Try it now" tool он работает отлично:Ошибка при каждом запуске datastore.runQuery: один из полей Query.query и Query.gql_query должен быть установлен

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": { 
... 

Я могу проверку подлинности с помощью своих учетных данных, создание транзакции и т.д., так что я знаю, что это не проблема аутентификации.

Вот код, который я пытаюсь запустить в узле:

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 и т.д.

Является ли это ошибка, или я делаю что-то глупое?

Спасибо!

ответ

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)); 
Смежные вопросы