Проверить заданное поле c в документе Firebase и вернуть идентификатор документа, если поле найдено? - PullRequest
1 голос
/ 25 января 2020

Я хочу вернуть идентификатор документа, если поле в документе соответствует тому, что мне нужно. Я пробовал это до сих пор.

enter image description here

final result = await queueCollection.where('patientID', isEqualTo: uid).getDocuments();
print(result.documents);
return result;

Ответы [ 2 ]

1 голос
/ 25 января 2020

Если вы хотите получить из базы данных элементы, соответствующие вашему запросу result, вам следует использовать stream, как в следующих строках кода:

 Widget _build(BuildContext context) {
 return StreamBuilder<QuerySnapshot>(
   stream: queueCollection.where('patientID', isEqualTo: uid).snapshots(),
   builder: (context, snapshot) {
     if (!snapshot.hasData) {
       return LinearProgressIndicator();
     }

     var snapshots = snapshot.data.documents;
     //Do what you need to do with the data

     //return a ListView for example
   },
 );
}

Обратите внимание что snapshots является объектом типа List<DocumentSnapshot>. Теперь просто переберите список и извлеките из него каждый элемент DocumentSnapshot. Как только вы его получите, просто получите patientID, например:

var patientID = userDocument["patientID"]
0 голосов
/ 25 января 2020

Вы должны рассмотреть, какой метод возвращает то, что на платформе Firebase. getDocument() возвращает несколько документов, если они есть. Ваша переменная result теперь содержит QuerySnapshot. Вы можете перебирать каждый документ с помощью этого кода.

result.documents.forEach((DocumentSnapshot documentSnapshot ){
    print(documentSnapshot.data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...