Исключить документ из запроса - PullRequest
0 голосов
/ 24 октября 2019

Я уже некоторое время борюсь с этой проблемой, не могу найти ни одного прямого ответа, чтобы обойти ее. Я действительно ценю любую помощь и более практичный код, чтобы понять это.

Я запрашиваю документы из коллекции в Firestore. Затем я помещаю их в пользовательский список:

QuerySnapshot snapshot = await cardRef.limit(10).getDocuments();
    List<CustomCard> cards =
        snapshot.documents.map((doc) => CustomCard.fromDocument(doc)).toList();

Затем я отображаю список следующим образом:

//if cards != null
return Stack(children: cards);

Однако мне нужно заблокировать добавление документов в карты. «ЕСЛИ они содержат ключ внутри карты« ключей ».

Я пытался сделать что-то подобное безуспешно:

if(snapshot.documents.contains('keys.$currentUserid'))
//dont add to list

Но кто-то сказал в моем предыдущем посте, чтоЯ должен спрятать карту на стороне клиента. Это лучший подход, так как эта карта все еще будет добавлена ​​в список? Как мне это сделать?

в сумме: 1) получить все документы из коллекции, 2) проверить каждый на предмет конкретного ключа, 3) если у них нет ключа, добавить в список.

Заранее спасибо!

1 Ответ

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

Вы используете snapshot.documents, который является List<DocumentSnapshot> объектом . Так что вы ищете способ получить еще один список из snapshot.documents с некоторыми удаленными документами.

Мой первоначальный поиск этого flutter filter list, который показывает, что List.where - это то, что вы должны использовать для этого. Простой пример на этом сайте: Флаттер: список фильтров по некоторому условию

Так что это приведет к чему-то вроде:

QuerySnapshot snapshot = await cardRef.limit(10).getDocuments();
List<DocumentSnapshot> filtered = snapshot.documents.where((doc) => ... /* your filter goes here */ )
List<CustomCard> cards = filtered.map((doc) => CustomCard.fromDocument(doc)).toList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...