我试图确定处理向用户显示他们有未读消息的最佳方式,例如在导航栏中。
目前,我对每个对话都有单独的文档,其中包含如下数据:
users: [ 'userId-1', 'userId-2' ]
messages: [
{
message: 'Test message',
timestamp: 12345678910,
userId: 123456
},
// etc...
]
目前我正在考虑给消息对象添加一个unread
属性,然后,在页面加载时,我必须获取users
中包含currentUser id的每个文档,以及messages
中是否有消息对象包含unread: true
属性。
但是,我必须将消息标记为已读,但只针对其中一个用户,所以我的数据结构已经不起作用了。
另外,这对我来说似乎不是很好,特别是当用户有大量的对话时。
1条答案
按热度按时间iibxawm41#
我正在尝试确定向用户显示他们有未读消息的最佳方式,例如在导航栏中
我知道您只想显示未读邮件的数量(或至少有一条未读邮件的信息)。如果是这种情况,您可以利用新的
count()
聚合,它考虑了查询上的任何过滤器。您的数据模型对我来说不是100%清楚,但由于您有一个用户数组,您可以有一个额外的数组字段,其中包含尚未阅读消息的用户。因此,在页面加载时,您需要构建包含currentUser uid的数组的所有消息的查询,然后在此查询中调用
getCountFromServer()
。您将不再为与查询相对应的每条消息付费,而是为查询匹配的每批(最多1000个)索引条目支付一个文档读取的费用。