【发布时间】:2019-12-20 14:05:45
【问题描述】:
我有一个带有 Firestore RTDB 后端的 Flutter 聊天应用:
messages (collection)
message_1 (document)
chat (collection)
chat_1 (document)
chat_2 (document)
users (array, document field)
user_id_1 (String)
user_id_2 (String)
user_info (map to store user info, like name, avatar etc)
message_2 (document)
chat (collection)
chat_1 (document)
chat_2 (document)
users (array, document field)
user_id_1 (String)
user_id_2 (String)
user_info (map to store user info, like name, avatar etc)
我想创建一个主页,其中显示用户参与的所有聊天,按最近排序,就像任何普通聊天应用一样:
我知道如何显示用户参与的聊天。问题是,我不知道如何处理排序。有一种简单的方法可以做到这一点:每次发送新消息时,使用云功能并更新消息文档中名为lastSent 的字段,然后在查询中执行orderBy('lastSent', descending: true)。问题是,每次发送消息时,都必须进行两次写入,而不是仅仅为了更新该字段。有没有更好的方法来处理这个?
注意:我的应用不仅仅是一个聊天应用,它只是主应用的一部分。想象一下类似于 Airbnb 的聊天功能,因此聊天消息的数量或频率可能不如 Facebook Messenger 大
【问题讨论】:
-
你有这个实现吗,如果有,请分享一下,因为我也处于同样的情况
-
是的。你到底需要什么?更新最新字段的云功能?
-
我想显示一个最近聊天列表,列表根据最新聊天排序,我还想在该列表中显示最后一条消息和时间戳。我正在使用flutter和firestore,目前我能够显示最近聊天的列表,但只有用户名和列表按字母顺序排序
-
我已发送邮件
-
你能分享你的代码吗?我需要完全相同的东西。
标签: firebase flutter google-cloud-firestore google-cloud-functions chat