Flutter应用中如何查询Firebase今日新增的商品数据?
解决Firestore筛选今日新增商品的查询问题
你的查询逻辑存在两个核心问题:
- 类型不匹配:
DateTime.now().day -1返回的是整数(比如今日是25号则返回24),但Firestore中tarih字段是DateTime类型,整数和DateTime无法直接比较,导致无匹配结果。 - 时间区间错误:你需要的是「今日凌晨00:00:00到当前时间」的区间,而非基于天数的数值计算。
修改后的正确查询代码如下:
var today = DateTime.now(); // 构造今日凌晨00:00:00的时间对象 var startOfDay = DateTime(today.year, today.month, today.day); var response = await FirebaseFirestore.instance .collection('sayim') .where('sirket', isEqualTo: sirket) .where('tarih', isGreaterThanOrEqualTo: startOfDay) .where('tarih', isLessThanOrEqualTo: DateTime.now()) .get();
补充说明
如果你的tarih字段存储的是时间戳(毫秒数),需要将时间对象转换为对应的毫秒数再进行查询:
var startOfDayTimestamp = startOfDay.millisecondsSinceEpoch; var nowTimestamp = DateTime.now().millisecondsSinceEpoch; var response = await FirebaseFirestore.instance .collection('sayim') .where('sirket', isEqualTo: sirket) .where('tarih', isGreaterThanOrEqualTo: startOfDayTimestamp) .where('tarih', isLessThanOrEqualTo: nowTimestamp) .get();
内容的提问来源于stack exchange,提问作者Kerem Yavuz
相关产品推荐
相关产品推荐

