java - Firestore 查询数据顺序

标签 java android firebase google-cloud-firestore

我正在从 Firestore 检索数据,并且想添加检索它的顺序,因此我尝试了以下代码:

 Query query = firebaseFirestore.collection("docs").orderBy("date", Query.Direction.DESCENDING/*ASCENDING*/);
    FirestoreRecyclerOptions<download> docsFirestoreRecyclerOptions = new FirestoreRecyclerOptions.Builder<download>()
            .setQuery(query, download.class)
            .build();

在日期中,我在字符串类型中添加时间和日期,例如

02:42:31 - 2020/08/01

这样,我想确保最新的帖子出现在回收器 View 的顶部。 这一天效果很好,但第二天如果时间允许的话

01:00:00 - 2020/08/02

它将出现在前一天添加的帖子之前。有没有更好的方法从 Firestore 订购数据?

最佳答案

Is there a better way to ordering data from Firestore?

当然是这样。您可以将时间和日期存储为 Java Date,而不是将其存储为字符串。 ,日期是 Firestore supported data type或作为 Firestore Timestamp目的。这是可以帮助您实现这一目标的答案:

ServerTimestamp is always null on Firebase Firestore

现在,将 date 属性的类型设置为 Firestore Timestamp,您的查询将完美运行。

但是,如果您坚持将日期和时间存储为字符串,则可以选择将它们存储为可以同时按字典顺序和时间顺序排序的格式。

ISO 8601 格式如下所示:

20200802T131425

这是我当前回答这个问题的时间。

August 02, 2020 1:14:25 PM UTC

关于java - Firestore 查询数据顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63213688/

相关文章:

java - 如何将 android 客户端注册 token 发送到 FCM 服务器?

java - 从 html 页面获取价格

java - 是否有现成的可同时进行 cucumber 测试的基础设施?

android - 将应用程序快速部署到 Android 模拟器总是失败

java - Android 编程中的最终变量

javascript - 更新firestore中文档的createdAt和updatedAt日期字段的正确方法是什么?

java - 如何更改 JSpinner 上的默认选择?

Java Logger 向控制台生成多个相同的日志

android - 获取 Firebase 通知列表?

ios - Firebase 通知适用于 android,不适用于 ios(ionic 3)