Firebase -向用户显示他们有未读消息

pn9klfpd  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(177)

我试图确定处理向用户显示他们有未读消息的最佳方式,例如在导航栏中。
目前,我对每个对话都有单独的文档,其中包含如下数据:

users: [ 'userId-1', 'userId-2' ]
messages: [
  {
    message: 'Test message',
    timestamp: 12345678910,
    userId: 123456
  },
  // etc...
]

目前我正在考虑给消息对象添加一个unread属性,然后,在页面加载时,我必须获取users中包含currentUser id的每个文档,以及messages中是否有消息对象包含unread: true属性。
但是,我必须将消息标记为已读,但只针对其中一个用户,所以我的数据结构已经不起作用了。
另外,这对我来说似乎不是很好,特别是当用户有大量的对话时。

iibxawm4

iibxawm41#

我正在尝试确定向用户显示他们有未读消息的最佳方式,例如在导航栏中
我知道您只想显示未读邮件的数量(或至少有一条未读邮件的信息)。如果是这种情况,您可以利用新的count()聚合,它考虑了查询上的任何过滤器。
您的数据模型对我来说不是100%清楚,但由于您有一个用户数组,您可以有一个额外的数组字段,其中包含尚未阅读消息的用户。因此,在页面加载时,您需要构建包含currentUser uid的数组的所有消息的查询,然后在此查询中调用getCountFromServer()
您将不再为与查询相对应的每条消息付费,而是为查询匹配的每批(最多1000个)索引条目支付一个文档读取的费用。

相关问题