使用 firestore 计算群聊中看不见的消息
Count unseen messages in group chat with firestore
我想跟踪群聊中每个成员未看到消息的数量。我将聊天元数据存储在 chats
集合中,并将每次聊天的消息存储在 messages/{chatId}
.
中
我已经检查了其他询问此问题的线程,但在这种情况下有一个群聊,所以它更复杂。我看过的帖子假设这是两个人之间的聊天。
我考虑过创建一个新集合 seenMsgTimestamps
,我在其中存储某个用户在每个群聊中看到的最后一条消息的时间戳。在我的应用程序中,我将从 seenMsgTimestamps
中找到的时间戳开始监听 messages
的变化,并计算那里有多少条新消息。
这是一个好方法还是有更好的方法?
提前致谢。
我认为您可以继续使用此解决方案。为什么这个解决方案好?
I have thought about having a new collection seenMsgTimestamps where I store the timestamp of the last message that a certain user has seen for each group chat.
您通过创建新集合来对数据进行非规范化,这对于 NoSQL 数据库来说是一种非常常见的做法。在你的特殊情况下,我认为这是最好的解决方案。
In my app, I will listen to changes to messages starting from the the timestamp found in seenMsgTimestamps for that chat
这也很好,因为您是在有限的数据集上使用查询,而不是在整个集合上,这意味着更少的读取、更少的支付费用,但性能更高。
关于计数,我建议你也阅读我这篇 的回答的最后一部分。所以你也可以考虑使用Firebase实时数据库。
我想跟踪群聊中每个成员未看到消息的数量。我将聊天元数据存储在 chats
集合中,并将每次聊天的消息存储在 messages/{chatId}
.
我已经检查了其他询问此问题的线程,但在这种情况下有一个群聊,所以它更复杂。我看过的帖子假设这是两个人之间的聊天。
我考虑过创建一个新集合 seenMsgTimestamps
,我在其中存储某个用户在每个群聊中看到的最后一条消息的时间戳。在我的应用程序中,我将从 seenMsgTimestamps
中找到的时间戳开始监听 messages
的变化,并计算那里有多少条新消息。
这是一个好方法还是有更好的方法?
提前致谢。
我认为您可以继续使用此解决方案。为什么这个解决方案好?
I have thought about having a new collection seenMsgTimestamps where I store the timestamp of the last message that a certain user has seen for each group chat.
您通过创建新集合来对数据进行非规范化,这对于 NoSQL 数据库来说是一种非常常见的做法。在你的特殊情况下,我认为这是最好的解决方案。
In my app, I will listen to changes to messages starting from the the timestamp found in seenMsgTimestamps for that chat
这也很好,因为您是在有限的数据集上使用查询,而不是在整个集合上,这意味着更少的读取、更少的支付费用,但性能更高。
关于计数,我建议你也阅读我这篇