Запросы Firebase firestore не фильтруют данные, даже при использовании where в flutter

#android #firebase #flutter #stream-builder

# #Android #firebase #flutter #stream-builder

Вопрос:

Я пытаюсь использовать where запрос Firebase firestore в моем приложении flutter, но он показывает все данные в коллекции без фильтрации ., вот мой код :

   Widget buildingMessages() {
    print('message room id $roomID'); //The correct id is being printed here
    var theMessages = FirebaseFirestore.instance.collection('messages');
    theMessages.where('room_id',isEqualTo: roomID).orderBy('created', descending: true);
    return StreamBuilder<QuerySnapshot>(
      stream: theMessages.snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
          return Text('Something went wrong');
        }

        return new ListView(
          children: snapshot.data.docs.map((DocumentSnapshot document) {
//....
 

Ответ №1:

Проблема в stream: theMessages.snapshots() . Вы ссылаетесь на тематические сообщения. и вы не используете свое предложение where. расширяет его с помощью вашего предложения where. Нравится

 stream: theMessages.snapshots().where(
                  'room_id',isEqualTo: roomID).orderBy('created', descending: true);
 

Редактировать: или инициализировать его как

 var theMessages = FirebaseFirestore.instance.collection('messages').
            where('room_id',isEqualTo: roomID).orderBy('created', descending: true);