在与Firestore的群聊中计算未见消息的数量

时间:2018-11-18 10:04:23

标签: firebase nosql google-cloud-firestore chat

我想跟踪群聊中每个成员看不到的消息数。我将聊天元数据存储在chats集合中,并将每次聊天的消息存储在messages/{chatId}中。

我检查了其他询问此问题的线程,但是在这种情况下,存在群聊,因此更加复杂。我读过的线程假定这是两个人之间的聊天。

我曾考虑过要有一个新集合seenMsgTimestamps,在其中存储某个用户在每次群聊中看到的最后一条消息的时间戳。在我的应用中,我将从该聊天的messages中找到的时间戳开始,听对seenMsgTimestamps的更改,并计算有多少新消息。

这是一种好方法还是有更好的方法呢?

谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您可以继续使用此解决方案。为什么这个解决方案好?

  

我曾考虑过要有一个新的seenMsgTimestamps集合,在其中存储某个用户在每次群聊中看到的最后一条消息的时间戳。

您可以通过创建一个新的集合来对数据进行非规范化,这对于NoSQL数据库是很常见的做法。对于您的特殊情况,我认为这是最好的解决方案。

  

在我的应用中,我将收听针对该聊天的,从seenMsgTimestamps中找到的时间戳开始的消息更改

这也很好,因为您是在有限的数据集上而不是在整个集合上使用查询,这意味着读取次数更少,支付的钱更少,但性能更高。

关于计数,我建议您也从此 post 阅读答案的最后一部分。因此,您也可以考虑将Firebase实时数据库用于此类转换器。