如果文档中的字段与我需要的匹配,我想返回文档ID。到目前为止,我已经尝试过了。
final result = await queueCollection.where('patientID', isEqualTo: uid).getDocuments();
print(result.documents);
return result;
答案 0 :(得分:1)
如果要从数据库中获取与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"]
答案 1 :(得分:0)
您应该考虑哪种方法在Firebase平台中返回什么。 getDocument()
返回多个文档(如果有)。您的result
变量现在保存QuerySnapshot
。您可以使用此代码遍历每个文档。
result.documents.forEach((DocumentSnapshot documentSnapshot ){
print(documentSnapshot.data);
});