我想在 Meteor 中创建一个消息传递应用程序(使用 auth 分支)。它有一个 Messages 集合,其中每个文档都有一组回复文档(“回复”)。在侧边栏中,我们有消息集合的不同视图,其中每个视图都有一个“查询”字段,该字段作为参数提供给 Meteor.publish('messages')... 方法。
到目前为止,一切都很好。如果我单击视图,页面的主要部分会显示与查询匹配的消息列表。对于每条消息,如果有任何回复比当前用户上次打开消息时更新,或者她从未打开过消息,我会以粗体显示。为此,我为每条消息维护一个“read_by”字段,其中包含一组 {user_id, ..., read_at: ...} 记录。这也很有效。
问题是我需要侧边栏中的每个视图都显示一个带有每个视图的未读消息数量的徽章(根据上一段中的逻辑),而不仅仅是当前选择的一个。
我该如何解决这个问题?据我所知,这意味着我需要针对 Messages 集合维护一些实时查询。同时,客户端不能选择订阅整个 Messages 集合——让我们假设它拥有数百万个文档。无论服务器上的数据库集合中有多少文档,客户端都必须保持敏捷。
我怀疑这需要不同的架构设计(这不是问题),但我不太明白。