Возникли некоторые проблемы с пониманием того, как я должен использовать Firebase в логическом, структурном смысле.
У меня есть база данных, которая в настоящее время выглядит так:
В приложении, которое я использовал:
StreamBuilder(
stream: Firestore.instance.collection('stores').snapshots(),
builder: (context, snapshot) {
<code here>
}
),
Согласно всей документации и руководствам.
Но это возвращает циклы по всем моим документам , это все мои идентификаторы пользователей. Я не хочу этого, поскольку пользователь должен видеть только свои собственные данные. Но если я попытаюсь изменить его на:
stream: Firestore.instance.collection('stores').document(uid).snapshots(),
, то будет выдана ошибка, потому что вы можете циклически просматривать только коллекции документов, а не документы коллекций.
Итак, поскольку этот дизайн вообще не работает, я подумал, может быть, добавить еще один лишний уровень в базу данных, чтобы он выглядел так:
Collection:
- application name
Document:
- Stores
Collection:
- UID of user
Fields:
- Datafield1
- Datafield2
- Datafield3
- Datafield4
- etc etc etc
Чтобы попытаться заставить его соответствовать чему-то полезному. Но он не позволит вам сделать это и в Firebase, так как он будет использовать только поля в документах, а не в коллекциях.
Итак, мой вопрос, как я могу использовать этот продукт для циклического просмотра только одного набора данных пользователей ? Я уверен, что это должно быть простое изменение в этой строке:
stream: Firestore.instance.collection('stores').snapshots(),
Но я нигде в Интернете не могу найти об этом.
EDIT: @ SenpaiLeo
Раньше я возвращал свои данные так:
return ListView.builder(
itemExtent: 500,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildListRows(context, snapshot.data.documents[index]),
);
А затем в _buildListRows:
Widget _buildListRows(BuildContext context, DocumentSnapshot document) {
...
Container(
child: TextField(
controller: _storeNameController,
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: document['store_name'],
),
),
),
...
Так что, возможно, теперь я изменил ссылку на основе вашей рекомендации, что теперь это:
document['store_name']
Неправильная ссылка?