Flutter + Firebase. 对数据按时间顺序进行排序。

10

我向集合中添加了一些数据。当我检索它时,它按照生成的ID进行排序。是否可能使Firebase按照时间顺序排序,或者需要添加一个日期字段,在Flutter中检索后进行排序?


为什么不在查询中使用orderBy? - Logemann
3个回答

22
是的,您需要一个createdAt时间戳字段,并像这样使用它。
Firestore.instance
     .collection("users")
     .orderBy('createdAt', descending: true or false).getDocuments()

你可以使用Flutter中的Timestamp(包含在cloud_firestore中)将createdAt存储在Flutter端,并且可以使用Timestamp.now()获取当前时间戳。


在控制台中出现错误:“Status{code=FAILED_PRECONDITION, description=The query requires an index. You can create it here...." 有什么建议吗?谢谢。 - Kamlesh
当我们使用排序功能时,Firestore需要创建索引以提高性能。您应该按照链接创建索引。 - ibrahimkarahan
通过 Firebase 建议的控制台 URL 创建索引有点奇怪,但我已经创建了索引。谢谢。 - Kamlesh

4

没有内置的元数据来确定文档插入时间。如果您想按照插入顺序对文档进行排序,则确实需要自己添加带有该信息的字段,并在检索文档时根据该字段排序。


1
如果您已经存储了ID,则可以按照 id 进行排序,这些ID是由Firebase使用时间戳生成的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接