Как сделать запрос к вложенному документу Firestore
Я работаю над приложением и хочу запросить поддокумент Firestore. Позвольте мне объяснить дальше.
- У меня есть коллекция документов, где хранятся автомобили, каждый документ имеет конкретную машину с описанием.
- В каждом из этих документов я представляю собой сборник под названием
user_data
у которого есть собственный документ, в котором хранится конкретный идентификатор пользователя, добавившего автомобиль в свой список пожеланий.
Теперь я хочу получить документ об автомобилях, если в подколлекции присутствует идентификатор пользователя. Короче говоря, я хочу получить список желаний конкретного пользователя. Я использую streambuilder с listviewbuilder, но проблема в том, как мне выполнить этот запрос?
Или есть какой-нибудь более простой способ сделать это?
2 ответа
Запросы в Firestore являются мелкими, что означает, что они получают только элементы из коллекции, с которой выполняется запрос. Невозможно получить документы из коллекции верхнего уровня и других коллекций или вложенных коллекций в одном запросе. Firestore не поддерживает запросы к различным коллекциям за один шаг. Таким образом, вы не можете получить элементы из коллекции, основанные на элементах, которые существуют в подколлекции. Один запрос может использовать только свойства документов в одной коллекции.
Короче говоря, я хочу получить список желаний конкретного пользователя.
Поэтому самое простое решение, которое я могу придумать, - добавить под каждым объектом пользователя массив любимых автомобилей. Ваша новая структура базы данных должна выглядеть примерно так:
Firestore-root
|
--- users
|
--- uid
|
--- favoriteCars : ["carId", "carId"]
Таким образом, вы можете запросить вашу базу данных, чтобы получить только автомобили, которые пользователь отметил их как избранные. Вы можете также хранить вместо этих идентификаторов в массиве фактический объект автомобиля. Пожалуйста, смотрите здесь более подробно о плюсах и минусах.
В настоящее время Firebase Cloud Firestore не поддерживает запросы с вложенной коллекцией. Возможно, вам придется структурировать вашу базу данных так, чтобы можно было делать запросы.
- Храните идентификатор пользователя в массиве в автомобильном документе.
- Используйте отдельную коллекцию, чтобы сохранить связь между пользователем и автомобилями.
Вы можете проверить это видео из Firebase.
Карты, массивы и подколлекции, о мой! | Познакомьтесь с Cloud Firestore