当前位置: 首页 > 知识库问答 >
问题:

如何按日期排序Firebase文档引用的地图?

谷梁振
2023-03-14

我正在尝试用Firebase Cloud构建一个小型聊天应用程序。 我在Firebase数据库中创建了以下结构:

Collection "users" -> bob@gmail.com document -> map of "chat rooms" field (type Map<String, DocumentReference>)
Collection chatRooms -> room id document -> Collection messages -> message id document -> fields

邮件id文档包含以下字段:

from: the user that sent the message
message: the text of the mesasage
sentAt: Date

我想创建一个当前用户的所有聊天室的回收视图。 所以我做的是:

FireDB.collection("users").document(connectedEmail).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
    @Override
    public void onSuccess(DocumentSnapshot documentSnapshot) {
        Log.d(this.getClass().getName(), "addOnSuccessListener:success");
        if (!(documentSnapshot.exists())) {
            // TODO
            return;
        }
        Map<String, DocumentReference> chatRooms = (Map<String, DocumentReference>) documentSnapshot.get("chatRooms");
        if (chatRooms.isEmpty()) {
            // TODO
            return;
        }
    }
}).addOnFailureListener(new OnFailureListener() {

    @Override
    public void onFailure(@NonNull Exception e) {
        Log.d(this.getClass().getName(), "addOnSuccessListener:failed");
    }
});

到最后一条信息的日期去聊天室地图最简单的方法是什么? 我想在room id document级别中保留最近一次接触这个文档的时间,但是我想知道是否可以在不添加特殊支持的情况下使用Firebase。

共有1个答案

涂溪叠
2023-03-14

是的,你必须更新聊天室的文档,每当一个消息被发送,Firebase Firestore不会自动添加时间戳到写入。

假设您在room文档中有字段“updated_at”(时间戳中的时间),那么每当在这个room中发送消息时,您只需用最新的时间戳更新它。 然后你可以按特定的顺序得到所有的房间。

为什么在时间戳中节省时间?

 类似资料:
  • 我正在开发一个应用程序,该应用程序接收,带有,格式为。以下是JSON数据格式。 我想根据最新的时间戳对NOTNUMBER进行排序。我尝试了,也尝试了,但在静脉中。结果是升序。我希望日期戳以降序排序。我也尝试了使用,但不起作用。我想在这一天排序: 在使用过滤器参数时有点困惑。 请帮帮我。提前感谢

  • 问题内容: 我想按日期订购。 例如 我已经尝试过: 伯,这是行不通的。 我得到这个代替: 你能帮我吗? 问题答案: 如果要按日期排序, 请将其存储为日期而不是字符串。 除非您的日期字符串的格式为,否则它不会按您希望的顺序排序。 数据库可以按原样进行足够的工作,而无需人们加倍努力,因此,您应该尽可能地避免我喜欢的 SQL体操。 将其存储为日期,然后(如果需要)使用日期函数以形式获取它。 这样会比您尝

  • 问题内容: 我知道这一定是相对简单的,但是我有一个JSON数据集,我想按日期排序。到目前为止,我无处不在遇到问题。现在,我将日期存储为。如果有帮助,我可以访问jquery,但是我意识到.sort()是本机JS。提前致谢。 问题答案: 假设您有一个javascript对象数组,只需使用自定义排序功能即可: Array 方法使用回调函数对数组进行排序,该回调函数传递给数组中的元素对。 如果返回值为负,

  • 问题内容: 我正在尝试按日期顺序显示文件数组(最后修改)。 我已经完成了遍历数组并将其排序到另一个数组中的购买循环,但是有没有更简单(更有效)的方法来做到这一点? 问题答案: *从PHP 7.2.0开始, *警告 已被弃用。强烈建议不要使用此功能。 为了后代的目的,如果在接受的答案中链接的论坛帖子丢失或不清楚,则所需的相关代码为: 在我的系统上对此进行了测试,并验证了它确实可以根据需要按文件mti

  • 我有一个JTable,它有两列,文件名和日期都被修改了。我为第一列添加了name String,并为第二个dateTime列添加了。 我将dateTime列呈现为字符串。 我还启用了 编辑2 我已经测试并弄明白了。如果使用DefaultTableModel而不重写它的getColumnClass()方法,那么在使用Date或Number列时会遇到麻烦。

  • 问题内容: 我尝试按ASC顺序在表上使用Spring-Data-JPA创建应用程序,但它给了我一个错误: 为什么 ? 或者 问题答案: 尝试在“全部”和“订单”之间添加“按”,如下所示:

  • 问题内容: 假设我在猫鼬中运行此查询: 这行不通! 问题答案: 在发行版本中,按猫鼬排序已得到发展,因此其中某些答案不再有效。从Mongoose 的 4.1.x 版本开始,可以通过以下任何一种方式对字段进行降序排序: 对于升序排序,省略了对字符串版本或使用值的前缀,或。

  • 问题内容: 我目前有一个index.php文件,该文件允许我输出同一目录内的文件列表,输出显示名称,然后使用filemtime()函数显示文件修改的日期。我现在的问题是,我将如何对输出进行排序以显示最新的修改后的文件?,我已经思考了一段时间了。如果仅通过mysql交互进行操作,则完全没有问题。请给我一个示例,说明如何从最新修改的文​​件开始排序和输出文件列表。这就是我现在所拥有的 问题答案: 您需