Firestore запрос в поле с несколькими значениями - PullRequest
0 голосов
/ 19 октября 2019

Можно ли запросить поля документов по массиву значений, в котором будут возвращены поля, содержащие одно из значений элементов массива

                 _fireStore
                .collection('articles')
                .orderBy('created')
                .where('projectName', isEqualTo: listHearted)
                .getDocuments()
                .asStream(),

Ответы [ 2 ]

1 голос
/ 19 октября 2019

В настоящее время нет способа выполнить запрос, который возвращает элементы, которые соответствуют одному из нескольких значений в определенном поле. Обходной путь - выполнить запрос для каждого проекта с поддержкой и объединить результаты на клиенте.

См. Также:

0 голосов
/ 21 октября 2019

Я сделал это, используя поток внутри потока.

 Stream<List<DocumentSnapshot>> streamDoc;
  StreamController<List<DocumentSnapshot>> controller =
  StreamController<List<DocumentSnapshot>>();

 void docRef() {
Firestore _fireStore = Firestore.instance;

Stream<QuerySnapshot> snapshot = _fireStore
    .collection('articles')
    .orderBy('created')
    .getDocuments()
    .asStream();

List<DocumentSnapshot> listDoc = List<DocumentSnapshot>();
snapshot.listen((snapshot) {
  snapshot.documents.forEach((e) {
    if (SharedPrefList.listHearted
            .contains(e.data['projectName'].toString()) &&
        widget.type == 'hearted') {
      listDoc.add(e);
      controller.add(listDoc);
    }
    if (SharedPrefList.listSeen
            .contains(e.data['projectName'].toString()) &&
        widget.type == 'seen') {
      listDoc.add(e);
      controller.add(listDoc);
    }
  });
});

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...