Google datastore.lookup в Node.js не возвращает результатов

Я пытаюсь выполнить простой поиск по своим данным в хранилище данных Google через google-api-nodejs-client JS плагин. Когда я запускаю этот поиск с помощью инструмента Google "попробуй сейчас", он работает нормально:

Request

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

{
 "keys": [
  {
   "path": [
    {
     "kind": "Subscriber",
     "name": "+1215XXXXXXX"
    }
   ]
  }
 ]
}

Response

200 OK

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

Однако когда я выполняю точно такой же запрос в Node.js, я не получаю никаких результатов - никаких ошибок, но также никаких результатов. Я могу проходить аутентификацию, подключаться к хранилищу данных, создавать транзакции и т. Д., Так что это не проблема аутентификации. Вот код узла, который я использую:

this.datastore.lookup({
    datasetId : 'healthier-staging',
    keys: [{ path: [{ kind: 'Subscriber', name: '+1215XXXXXXX' }] }]
},
    (function(err, result) {
        if (err) {
            console.error(err);
            return;
        }
        console.log(result);
}).bind(this));

И вывод консоли:

{ found: [], missing: [], deferred: [] }

Примечание: это связано с проблемой, о которой я сообщал в сообщении " Ошибка" каждый раз, когда я запускаю datastore.runQuery: необходимо указать одно из полей Query.query и Query.gql_query, где я пытаюсь прочитать те же данные, используя runQuery вместо lookup, но проблема, с которой я сталкиваюсь, другая.

Благодарю.

1 ответ

Ключи должны быть частью полезной нагрузки post:

this.datastore.lookup({
    datasetId : 'healthier-staging',
    resource: {
        keys: [{ path: [{ kind: 'Subscriber', name: '+1215XXXXXXX' }] }]
    }
},
    (function(err, result) {
        if (err) {
            console.error(err);
            return;
        }
        console.log(result);
}).bind(this));

Вы можете найти исходный код API хранилища данных здесь.