Как сделать запрос к вложенному документу Firestore - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над приложением и хочу запросить поддокумент Firestore. Позвольте мне объяснить подробнее.

  1. У меня есть коллекция документов, где хранятся автомобили, каждый документ имеет конкретную машину с описанием.
  2. В каждом из указанных выше документов я представляю подколлекцию под названием user_data, в которой есть собственный документ, в котором хранится конкретный идентификатор пользователя, добавившего автомобиль в свой список желаний.

Теперь я хочу получить документ об автомобилях, если в подколлекции присутствует идентификатор пользователя. Короче говоря, я хочу получить список желаний конкретного пользователя. Я использую streambuilder с listviewbuilder, но проблема в том, как выполнить этот запрос?

Или есть какой-нибудь более простой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Запросы в Firestore являются мелкими, что означает, что они получают только элементы из коллекции, для которой выполняется запрос. Невозможно получить документы из коллекции верхнего уровня и других коллекций или вложенных коллекций в одном запросе. Firestore не поддерживает запросы к различным коллекциям за один шаг. Таким образом, вы не можете получить элементы из коллекции, основанные на элементах, которые существуют в подколлекции. Один запрос может использовать только свойства документов в одной коллекции.

Короче говоря, я хочу получить список желаний конкретного пользователя.

Итак, самое простое решение, которое я могу придумать, - добавить под каждым объектом пользователя массив любимых автомобилей. Ваша новая структура базы данных должна выглядеть примерно так:

Firestore-root
    |
    --- users
          |
          --- uid
               |
               --- favoriteCars : ["carId", "carId"]

Таким образом, вы можете запросить вашу базу данных, чтобы получить только автомобили, которые пользователь отметил их как избранные. Вы также можете хранить вместо этих идентификаторов в массиве фактический объект автомобиля. Пожалуйста, смотрите здесь подробнее о плюсах и минусах.

0 голосов
/ 12 ноября 2018

В настоящее время Firebase Cloud Firestore не поддерживает запросы с дополнительным сбором.Возможно, вам придется структурировать вашу базу данных так, чтобы можно было запрашивать.

  • Сохранение идентификатора пользователя в массиве в автомобильном документе.
  • Используйте отдельную коллекцию, чтобы поддерживать связь между пользователем иавтомобили.

Вы можете проверить это видео из Firebase.

Карты, массивы и подколлекции, о, мой!|Познакомьтесь с Cloud Firestore

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