QuerySnapshot qs = await Firestore.instance.collection('posts').getDocuments();
qs.documents.forEach((DocumentSnapshot snap) {
snap.documentID == varuId;
});
getDocuments () выбирает документы для этого запроса, вам нужно использовать его вместо document (), который возвращает DocumentReference с указанным путем.
Запрос к пожарному депо является асинхронным.Вам нужно дождаться его результата, иначе вы получите Future, в этом примере Future<QuerySnapshot>
.Позже я получаю DocumentSnapshot
s от List<DocumentSnapshots>
(qs.documents), и для каждого снимка я проверяю их documentID
с помощью varuId.
Таким образом, выполняются шаги, запрашивая пожарный складДожидайтесь результата, зацикливайтесь на результатах.Возможно, вы можете вызвать setState()
для такой переменной, как isIdMatched
, а затем использовать это в своем выражении if-else
.
Редактировать: @Doug Стивенсон прав, этот метод дорогой, медленный и, вероятно, съедаетбатарея, потому что мы выбираем все документы, чтобы проверить documentId.Возможно, вы можете попробовать это:
DocumentReference qs =
Firestore.instance.collection('posts').document(varuId);
DocumentSnapshot snap = await qs.get();
print(snap.data == null ? 'notexists' : 'we have this doc')
Причина, по которой я проверяю данные на нуль, заключается в том, что даже если вы помещаете случайные строки в метод document (), он возвращает ссылку на документ с этим идентификатором.