Запрос на выборку Cloud Firestore через REST - PullRequest
0 голосов
/ 22 января 2020

У меня есть коллекция x, у каждого документа x есть подколлекция y. Каждый документ y имеет атрибут time. Я не могу понять, как запросить просто , что подколлекция через REST (я знаю, что эта функция существует в SDK). Пока что мой запрос, который, очевидно, неверен:

{
  "structuredQuery": {
    "from": [
      {
        "collectionId": "x",
        "allDescendants": true
      }
    ],
    "where": {
      "compositeFilter": {
        "op": "AND",
        "filters": [
          {
            "fieldFilter": {
              "field": {
                "fieldPath": "y.time"
              },
              "op": "GREATER_THAN_OR_EQUAL",
              "value": {
                "integerValue": 1577836800000
              }
            }
          },
          {
            "fieldFilter": {
              "field": {
                "fieldPath": "y.time"
              },
              "op": "LESS_THAN_OR_EQUAL",
              "value": {
                "integerValue": 1578355200000
              }
            }
          }
        ]
      }
    }
  }
}

Отправка POST на https://firestore.googleapis.com/v1/projects/PROJECT/databases/{default}/documents:runQuery, но я также пытался .../documents/x/ID/y:runQuery, но это тоже явно неправильно.

1 Ответ

1 голос
/ 31 января 2020

Полагаю, вы описали запрос группы сбора для группы сбора y. В REST API это запрос allDescendants по пути projects/PROJECT/databases/(default)/documents (известный как документ root):

https://firestore.googleapis.com/v1/projects/PROJECT/databases/(default)/documents:runQuery

{
  "structuredQuery": {
    "from": [
      {
        "collectionId": "y",
        "allDescendants": true
      }
    ],
    "where": {
      "compositeFilter": {
        "op": "AND",
        "filters": [
          {
            "fieldFilter": {
              "field": {
                "fieldPath": "time"
              },
              "op": "GREATER_THAN_OR_EQUAL",
              "value": {
                "integerValue": 1577836800000
              }
            }
          },
          {
            "fieldFilter": {
              "field": {
                "fieldPath": "time"
              },
              "op": "LESS_THAN_OR_EQUAL",
              "value": {
                "integerValue": 1578355200000
              }
            }
          }
        ]
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...