You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Firestore带Where条件的查询无数据返回问题

解决Firestore带Where条件查询无结果的问题

可能的原因及解决方法

  • 字段名大小写不匹配
    从你的Firestore数据截图可见,文档中的字段是小写的name,但代码里查询用的是大写开头的Name。Firestore字段名区分大小写,这直接导致查询无法匹配到文档。修改代码中的查询字段名:

    await db
      .collection('captured_data')
      // 将'Name'改为'name'
      .where('name', isEqualTo: 'Ali Hussain')
      .get()
      // ... 后续逻辑
    
  • 字符串精确匹配问题
    确认查询字符串Ali Hussain和文档中name字段的值完全一致,包括大小写、空格、特殊字符。比如文档中如果是ali hussain全小写,当前查询就会失效。可以先打印文档中的字段值,对比后调整查询字符串。

  • 索引问题(概率较低)
    单条件等值查询一般无需手动创建索引,但如果控制台有索引缺失的报错提示,按照提示在Firebase控制台创建对应索引即可。

  • 异步逻辑优化(非查询无结果原因,但需注意)
    你在forEach中使用async会导致计数逻辑不可靠,建议改用for循环处理异步操作,简化代码:

    await db.collection('captured_data').where('name', isEqualTo: 'Ali Hussain').get().then((querySnapshot) async {
      for (var doc in querySnapshot.docs) {
        print(doc["name"]);
        Invoice.items.add(InvoiceItem(
          Name: doc["name"],
          date: doc["Time"],
          sleep: doc["Sleep"],
          vehicle: doc["Vehicle Name"],
          age: doc["Age"],
          blinks: doc["Blinks"],
          vehicle_speed: doc["Vehicle Speed"],
          yawn: doc["Yawn"],
        ));
      }
      // 遍历完成后直接生成PDF
      final pdfFile = await PdfInvoiceApi.generate(invoice);
      PdfApi.openFile(pdfFile);
    });
    

内容的提问来源于stack exchange,提问作者Alee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:16:11