gpt4 book ai didi

firebase - Firestore 聊天应用 - 构建消息主页

转载 作者:IT王子 更新时间:2023-10-29 06:42:01 24 4
gpt4 key购买 nike

我有一个带有 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)

我想创建一个主页,其中显示用户参与的所有聊天,按最近排序,就像任何普通聊天应用程序一样:

enter image description here

我知道如何显示用户参与的聊天。问题是,我不知道如何处理排序。有一种简单的方法可以做到这一点:每次发送新消息时,使用云函数并更新消息文档中名为 lastSent 的字段,然后执行 orderBy('lastSent', descending: true) 在你的查询中。问题是,每次发送消息时,您都必须进行两次写入,而不是一次更新该字段。有没有更好的方法来处理这个问题?

注意:我的应用不仅仅是聊天应用,这只是主应用的一部分。想象一下类似于 Airbnb 的聊天功能,因此聊天消息的数量或频率可能不会像 Facebook Messenger 那样大

最佳答案

常见的解决方案是按照您的建议进行:在每个“聊天室”的文档中存储一个 latest_updated 时间戳。

这确实意味着您需要进行两次写入而不是一次写入。但另一方面,您现在只需阅读“聊天室”文档即可确定正确的顺序,而不是阅读其下的个别消息。

请注意,虽然使用 Cloud Functions 肯定可以做到这一点,但也可以直接从客户端完成。如果客户端还将相应“聊天室”文档的 latest_updated 时间戳设置为与消息,尽管这将产生为您添加的每条消息额外阅读一份文档的费用。

关于firebase - Firestore 聊天应用 - 构建消息主页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com