Firebase Firestore REST-запрос - запрос и фильтр - PullRequest
0 голосов
/ 02 марта 2020

У меня есть база данных FireStore на проекте Firebase. Я хочу сделать запрос на отдых для фильтрации или запроса данных с почтальоном. Я использую «https://firestore.googleapis.com/v1/projects/ / database / (по умолчанию) / documents /», чтобы получить данные по известному пути в моей базе данных. Вот пример структуры моей базы данных:

  • users> xxxxx> messages> yyyyy> "sent": "true"

где "users" и "messages" являются коллекциями, "xxxxx" и "yyyyy" - это автоматически сгенерированные идентификаторы документов (xxxxx - это автоматически сгенерированный идентификатор пользователя)

Я хочу найти "xxxxx" s (пользователей), которые> отправили: "true" Я получу успех, если я знаю "xxxxx" и "yyyyy", но я не знаю их, потому что они автоматически генерируются и отличаются друг от друга в моей базе данных и не знают как это сделать.

1 Ответ

5 голосов
/ 02 марта 2020

Вам необходимо запустить запрос, как объяснено здесь в документации по API REST.

Так как вы хотите запросить все messages вложенные коллекции различных user документы, вам нужно "смоделировать" запрос группы сбора в вашем StructuredQuery. Это можно сделать, установив для элемента allDescendants значение true в CollectionSelector.

Таким образом, отправка запроса POST HTTP по следующему URL-адресу поможет. :

  var URL = "https://firestore.googleapis.com/v1/projects/<your-project-id>/databases/(default)/documents:runQuery";

Тело запроса POST должно содержать:

    "structuredQuery": {
        "from": [{
            "collectionId": "messages",
            "allDescendants": true
        }],

        "where": {
            "fieldFilter": {
                "field": {
                    "fieldPath": "sent"
                },
                "op": "EQUAL",
                "value": {
                    "stringValue": "true",
                }
            }
        }
    }

Обратите внимание, что вам нужно добавить индекс одного поля в базу данных Firestore следующим образом:

enter image description here


Обратите внимание, что, если ваше поле sent имеет тип Boolean (а не String, как показано в вашем вопросе ), вам необходимо использовать элемент booleanValue в элементе Value JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...