我在Firebase实时数据库中有一个小型数据库,其中包含用户添加的帖子。每次打开控制台时,每条帖子都位于正确的位置。
我正在尝试迁移到Cloud Firestore。我创建了一个脚本,用于将每个帖子对象从Firebase实时数据库复制到Cloud Firestore,并且工作正常。 问题是,当我将选项卡切换到Firestore时,不再按顺序排列帖子,而且我很难找到帖子。
如何以与Firebase和ListView
中相同的方式订购帖子?
答案 0 :(得分:1)
奇怪的Firestore控制台情况
这并不奇怪,是Firebase控制台中提供的默认排序方案(默认情况下)。
与Fireabse实时数据库ID不同,Cloud Firestore ID实际上纯粹是随机的。没有时间成分。这就是为什么(默认情况下)没有订单的原因。但是,正如弗兰克·范·普菲伦(Frank van Puffelen)在评论中提到的那样:
Cloud Firestore控制台通过单击文档列表上方的“过滤器”图标,支持对任何字段上的文档进行排序/过滤(自2018年6月开始)。
此外,如果知道文档的ID,只需在浏览器中按 CTRL + F 即可轻松找到所需的文档。我认为,这种排序方案使查找您正在寻找的文档变得相对直观。
如果要在ListView
中对元素进行排序,则应将这些要求添加到查询中。查询中的顺序与您在信息中心中看到的顺序无关。
需要这些ID,以便像您这样的应用可以大规模完美运行。大规模而言,文档在控制台中的显示顺序无关紧要,因为控制台对于查看大量文档没有用。
在ListView
中订购帖子的一种解决方案是根据timestamp
属性订购帖子。
对于Android, here ,您可以找到如何使用模型类或FieldValue.serverTimestamp()添加日期。