# #firebase #flutter #google-cloud-firestore
Вопрос:
Я работаю над проектом Flutter, который получает данные из облачного магазина Firestore.
Это поток, в котором я получаю все данные:
//Get Entries
Stream<List<Evento>> getEventos(){
return _db
.collection('eventos')
.snapshots()
.map((snapshot) => snapshot.docs
.map((doc) => Evento.fromJson(doc.data()))
.toList());
}
Это прекрасно работает для извлечения всех элементов коллекции, но в моем проекте есть экран, на котором мне нужно выбрать элементы, соответствующие значению поля.
Здесь у вас есть структура документа в коллекции «eventos»:
Мне нужно получить только те документы, поле «интересы» которых равно определенной строке, например «обнаженные» или «рестораны».
Как мне изменить getEventos (), чтобы я мог фильтровать в зависимости от значения поля «интерес»?
Ответ №1:
Вы можете использовать запросы с whereIn
оператором:
Stream<List<Evento>> getEventos(){
return _db
.collection('eventos')
.where('interes', whereIn: ['bares', 'restaurantes'])
.snapshots()
.map((snapshot) => snapshot.docs
.map((doc) => Evento.fromJson(doc.data()))
.toList());
}
Этот запрос вернет документы, в которых значение интереса равно либо bares, либо ресторанам.