- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想跟踪群聊中每个成员未看到消息的数量。我将聊天元数据存储在 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
这也很好,因为您正在对有限的数据集而不是整个集合使用查询,这意味着更少的读取、更少的支付费用,但性能更高。
关于计数,我建议您也阅读我在这个 post 中的回答的最后部分。 。因此,您也可以考虑使用 Firebase 实时数据库。
关于firebase - 使用 firestore 计算群聊中看不见的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359694/
我是一名优秀的程序员,十分优秀!