首页 > 解决方案 > 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

通过这个,我想确保最新的帖子出现在回收站视图的顶部。它在这一天运作良好,但如果时间的话,第二天

01:00:00 - 2020/08/02

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

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


有没有更好的方法从 Firestore 订购数据?

是的。除了将时间和日期存储为字符串之外,您还可以将其存储为 Java Date(日期是Firestore 支持的数据类型)或 Firestore Timestamp对象。这是一个可以帮助您实现这一目标的答案:

Firebase Firestore 上的 ServerTimestamp 始终为空

现在,将date属性类型设置为 Firestore Timestamp,您的查询将可以正常工作。

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

ISO 8601 格式如下所示:

20200802T131425

这就是我现在回答这个问题的时间。

August 02, 2020 1:14:25 PM UTC

推荐阅读