【问题标题】:how to search through all documents for a specific field value如何在所有文档中搜索特定字段值
【发布时间】:2021-07-25 05:19:36
【问题描述】:

如何在所有文档中搜索特定字段值

例如:如果我想要字段:所有文档中的 blood_group 'A+' 并显示所有包含“A+”的文档

https://i.stack.imgur.com/0IhT9.png

https://i.stack.imgur.com/4tkEG.png

source code

【问题讨论】:

    标签: android firebase flutter google-cloud-firestore


    【解决方案1】:

    您可以在集合引用的查询中使用.where 过滤器,如下所示:

    final QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection('users').where('blood_group', isEqualTo: 'A+').get();   
    final List<QueryDocumentSnapshot> documentSnapshotList = querySnapshot.docs;
    
    for (QueryDocumentSnapshot snapshot in documentSnapshotList) {
        print(snapshot.data());
    }
    
    

    【讨论】:

    • 这在发布的当前结构中不起作用。它必须等待,因为它是一个 Future \ async 请求。
    • 我刚刚将缺少的await 添加到解决方案中。您能否发布与该问题相关的项目代码部分?这将有助于使这更容易。
    • @VictorEronmosele 我如何获取例如血组并将其显示在新屏幕上
    • 你能把你想要使用的代码部分贴出来吗?为此,您很难完成整个项目。
    • @VictorEronmosele 确定我希望它在我的主要github.com/swojas/plasma-donation/blob/master/lib/main.dart 中最后一个提升按钮
    【解决方案2】:

    您可以使用.where 选项。根据您在图片中的 firebase 结构,您可以使用以下代码,获取满足您要求的所有文档的列表。

    Future<QuerySnapshot> bloodgroup (String bloodGroup) async {
     return await FirebaseFirestore.instance.collection('Donation').where('blood_group', isEqualTo: bloodGroup).get();
    }
    
    
    void getDocs() async {
    QuerySnapshot allResults = await bloodgroup('A+');
    
    for (var item in allResults){
    print(item.id); //this will print the id of all the documents which are A+.
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多