Использование структурированного запроса для получения значений на основе ключа в массиве - PullRequest
0 голосов
/ 19 апреля 2019

В моем пожарном депо у меня есть документ, структурированный как показано ниже.

Я пытаюсь настроить Zapier Zap, который позволит мне выбрать название магазина на основе storeId. Требуется структурированный запрос JSON, который извлекает данные.

Можно ли это сделать, и с чего мне начать, мне не хватает документации. Единственный запрос, который у меня есть сейчас, как показано ниже, но, очевидно, он не работает, так как все данные находятся в одном документе.

"where": {
    "fieldFilter": {
        "field": {
            "fieldPath": "stores/*/storeId"
        },
        "op": "EQUAL",
        "value": {
            "stringValue": "def"
        }
    }
}

Структура документа

{ 
  "stores": {
   "0": {
      "storeId": "abc",
      "name": "Store 1"
   },
   "1": {
      "storeId": "def",
      "name": "Store 2"
   }
  }
}

1 Ответ

0 голосов
/ 19 апреля 2019

Я не думаю, что вы можете сделать это с полем массива, но вы можете, если вы измените этот массив на поле карты. Примерно так:

mycollection/mydoc

{
  "someotherfield": "foo",
  "stores": {
     "abc": {
       "name": "Store 1"
      },
     "def": {
       "name": "Store 2"
      }
 }
}

Теперь вы можете использовать маску поля:

GET https://firestore.googleapis.com/v1/projects/MY-PROJECT/databases/(default)/documents/mycollection/mydoc?mask.fieldPaths=stores.abc.name

Ответ:

{
 "name": "projects/MY-PROJECT/databases/(default)/documents/mycollection/mydoc",
 "fields": {
  "stores": {
   "mapValue": {
    "fields": {
     "abc": {
      "mapValue": {
       "fields": {
        "name": {
         "stringValue": "Store 1"
        }
       }
      }
     }
    }
   }
  }
 },
 "createTime": "2019-04-20T19:14:01.792855Z",
 "updateTime": "2019-04-22T18:07:05.660561Z"
}
...