Flutter Firestore如何按Map内部字段值对查询结果进行排序?
问题原因
你当前的orderBy写法默认读取的是文档根层级下的sentDate字段,如果sentDate是嵌套在Map字段内部的话,必须用Firestore的点表示法指定完整的嵌套字段路径才能生效。
正确实现方法
把orderBy参数替换为上层Map字段名.sentDate,参考示例代码如下,记得替换对应字段即可:
FirebaseFirestore.instance .collection('messages') // 请将代码中的[上层Map字段名]替换为你截图中存储sentDate的父级Map字段的实际名称 .orderBy('上层Map字段名.sentDate', descending: false) .snapshots(),
注意事项
- 首次执行该嵌套字段的查询前需要先创建对应组合索引:如果执行时报错,开发控制台会自动生成对应索引的创建指引,按指引创建完成后等待1-2分钟索引生效即可正常查询。
- 需保证所有文档中该嵌套
sentDate字段类型统一,使用Firestore自带的Timestamp类型存储时间字段排序效果最优。
内容的提问来源于stack exchange,提问作者Martin Gogołowicz
相关产品推荐
相关产品推荐

