У меня есть простое приложение, которое использует Firestore в качестве источника данных.После изучения руководств Google о том, как создать лучшую базу данных, я начал разделять свои объекты на несколько таблиц (или как они называют это коллекции) и использовать ссылки на данные.
Позвольте мне привести простой пример.Допустим, у меня есть две коллекции (таблицы данных)
- ShoppingCategories
- ShoppingItems
Логика заключается в том, что в ShoppingItems
я могу хранить все предметы независимо от того,категории (например, молоко, хлеб, птица, вино, ...), но в моем ShoppingCategories
я создаю категории продуктов (например, дневник, фрукты, мясо, ...) и относящиеся к ним ссылочные позиции.
Вот как будет выглядеть модель данных во Flutter:
class ShoppingCategory {
DocumentReference reference;
String title;
List<ShoppingItem> items;
}
class ShoppingItem {
DocumentReference reference;
String title;
}
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что если я сделаю следующий вызов:
Firestore.instance.collection('shopping_categories').snapshot()
Iдействительно получит все категории покупок с недвижимостью items
;однако это будет просто тип DocumentReference
.Чтобы получить подробную информацию об этих ShoppingItems, мне нужно будет позвонить по номеру Firestore
(для каждого и каждого подпункта) и запросить их данные.
Мой вопрос будет следующим:
Есть ли способ, как сделать это более эффективно?Например, если бы я использовал Entity Framework, я бы вызвал метод .expand()
в моей коллекции items
, и он бы динамически извлекал все необходимые детали - поэтому за один вызов я получаю все детали.Могу ли я сделать что-то подобное в Flutter - Firestore?