如何只显示一次 Firebase 数据?

3

我正在开发一个使用Firebase实时数据库的Android应用程序。 这个应用程序类似于一个有限功能的社交媒体应用程序。 该应用程序将向用户显示包含文本数据的帖子。 我遇到了两个问题,其中第一个我已经通过分页的方式解决了,但是第二个问题我无法解决。 问题在于如何确定其他用户是否已经看过该帖子,然后不再显示它。 就像其他社交媒体平台一样, 例如Quora,每次我们打开该应用程序时都会显示不同的答案。 我需要重新映射我的数据以获得此功能吗? 我的用户对象和帖子对象大致如下。

   User{ 
      Name;
      Id;
      Post;
   }

Post {
    dateCreated;
    data;
    userId;
}

我的数据库树状结构将会长成这样

       ROOT
      /    \
   POST    Users

我将帖子的副本存储在ROOT节点下名为POST的子节点中,并存储在每个用户节点中,以获取用户发布的帖子。 PS:对于糟糕的英语,我感到抱歉。

1个回答

0

如果您想:

1- 显示尚未被查看的帖子,可以过滤其中 num_reads < 3 的帖子。每当用户查看帖子时,num_reads 就会增加。

2- 显示用户本人尚未阅读过的帖子。在这种情况下,最好创建一个多对多的集合 user_post_read(即将用户链接到已读的帖子)。获取所有当前用户在 user_post_read 中没有条目的帖子。


1
你能再详细解释一下吗?我没听懂。 - timph
@timph 你想做什么?显示没有被任何人查看的帖子,还是显示当前用户尚未查看的帖子? - FindOutIslamNow
后者。我想像Instagram搜索反馈一样只显示一次,或者像约会应用程序一样工作。他们只发布一次。我该如何实现这一点? - timph
据我所知,对于Firebase,创建一个包含每个用户是否已读每条消息的集合。当添加新消息时,将消息ID添加到该集合中,并将每个用户标记为未读。这将使您获得更快的速度,但也需要更大的空间。如果您不关心速度,但关心空间,可以在用户记录中存储用户已读取的消息ID。然后,您可以搜索用户未读取的消息ID。 - FindOutIslamNow
我还是没有理解你的观点。假设有10个用户,其中一个从现在开始发布了帖子,那么我如何跟踪这篇帖子,并且如何知道这篇帖子还没有被一些人看到,以便我可以展示给他们。 - timph
添加一个新的集合 => post_user: [{msg_id: 1, user_id: 1, read: false}, {msg_id: 1, user_id: 2, read: false}, {msg_id: 2, user_id: 1, read: false}, {msg_id: 2, user_id: 2, read: false}] 其中,posts: [{id: 1, text: 'test test'}, {id: 2, text: 'test1 test1'}] 的原始内容未提供需要翻译的部分。 - FindOutIslamNow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接