【问题标题】:Firebase - Showing users that they have unread messagesFirebase - 向用户显示他们有未读消息
【发布时间】:2022-11-04 02:12:37
【问题描述】:

我正在尝试确定处理向用户显示他们有未读消息的最佳方式,例如在导航栏中。

目前,对于每个对话,我都有单独的文档,其中包含如下数据:

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

目前我正在考虑向消息对象添加一个unread 属性。然后,在页面加载时,我必须获取users 包含 currentUser id 的每个文档,以及messages 中的任何消息对象是否包含unread: true 属性。

但随后我必须将消息标记为已读,但仅限于其中一个用户。所以我的数据结构已经不起作用了。

此外,这对我来说似乎不是很高效,尤其是在用户进行大量对话的情况下。关于如何以不同方式处理这个问题的任何想法?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    我正在尝试确定处理向用户展示的最佳方式 他们有一条未读消息,例如在导航栏中

    我了解您只想显示多条未读消息(或至少有一条未读消息的信息)。如果是这种情况,您可以利用新的count() aggregation,它考虑了查询中的任何过滤器。

    因此,在页面加载时,您需要构建用户包含 currentUser uid 和未读 === true 的所有消息的查询,然后在此查询上调用 getCountFromServer()

    您无需为与查询对应的每条消息付费,而是为每批最多 1000 个与查询匹配的索引条目读取一个文档付费。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2016-10-27
      • 1970-01-01
      相关资源
      最近更新 更多