Я пытаюсь запустить простой запрос в отношении хранилища данных 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
и т.д.
Является ли это ошибка, или я делаю что-то глупое?
Спасибо!