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

如何修改Flutter Firestore查询代码以获取仅过去一天的数据?

修改Firestore查询获取过去一天数据的方案

修改后的完整代码

先计算过去一天的时间戳,再添加对应的过滤条件:

// 计算当前时间往前推24小时的Timestamp
final oneDayAgo = Timestamp.fromDate(DateTime.now().subtract(const Duration(hours: 24)));

// 修改后的查询语句
FirebaseFirestore.instance
    .collection("Orders")
    .where('ostatus', isEqualTo: "4")
    .where('vid', isEqualTo: uid)
    .where('latestorder', isGreaterThanOrEqualTo: oneDayAgo) // 新增的时间过滤条件
    .orderBy("latestorder", descending: true)
    .snapshots(),

关键修改说明

  • 新增时间计算逻辑:用DateTime.now().subtract(Duration(hours:24))得到过去一天的时间点,再转成Firestore的Timestamp类型(确保和latestorder字段的存储类型匹配,避免类型不匹配报错)。
  • 添加时间过滤条件:通过where('latestorder', isGreaterThanOrEqualTo: oneDayAgo)筛选出latestorder字段值在过去一天范围内的数据,实现仅获取最近一天订单的需求。
  • 复合索引要求:因为同时使用多个where条件和orderBy,需要在Firebase控制台的Firestore索引页面创建复合索引,索引字段包含ostatus、vid、latestorder,排序方式对应latestorder的降序设置,否则查询会抛出索引缺失的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:50:21