如何只显示一次 Firebase 数据?

Posted

技术标签:

【中文标题】如何只显示一次 Firebase 数据?【英文标题】:How to show Firebase data only once? 【发布时间】:2020-08-25 18:00:21 【问题描述】:

我正在开发一个使用 Firebase 实时数据库的 android 应用程序。 这个应用程序与功能有限的社交媒体应用程序非常相似。 该应用程序将向用户显示包含文本数据的帖子。 我遇到了两个问题,我在 Pagination 的帮助下解决了第一个问题,但无法解决第二个问题。 问题是如何确定帖子是否已被其他用户看到,然后不再显示。 像其他社交媒体平台一样 例如 Quora,每次打开应用程序时 Quora 都会显示不同的答案。 我是否需要重新映射我的数据才能获得此功能? 我的用户对象和帖子对象看起来像这样。

   User 
      Name;
      Id;
      Post;
   

Post 
    dateCreated;
    data;
    userId;

我的数据库树结构看起来像这样

       ROOT
      /    \
   POST    Users

我将帖子的副本保存在 ROOT 的子节点中,即 POST 以及每个用户节点中,以获取用户发布的帖子。 PS:对不起英语不好。

【问题讨论】:

【参考方案1】:

如果你愿意

1- 显示尚未查看的帖子,您可以过滤帖子,例如 num_reads < 3。每次用户看到帖子时,num_reads 都会增加。

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

【讨论】:

你能详细说明一下吗。我没听懂。 @timph 你想做什么?显示尚未查看的帖子(来自任何人),或显示当前用户尚未查看的帖子? 后者。我只想像 instagram 搜索提要那样显示一次。或约会应用程序的工作方式。他们只发帖一次。我怎样才能做到这一点 AFAIK,对于 firebase,创建一个集合来保存每个用户是否阅读了每条消息。添加新消息时,将消息 id 添加到该集合中,每个用户都尚未阅读。这会给你很大的速度,但也需要很大的空间。如果您不关心速度但关心空间,则可以将用户已阅读的消息 ID 存储在他的记录中。然后,您搜索未添加到他已阅读的用户消息中的消息 我还是没明白你的意思 假设有 10 个用户,其中一个从现在开始发布帖子,我该如何跟踪帖子以及如何知道该帖子不会被少数人看到,以便我可以展示给他们。

以上是关于如何只显示一次 Firebase 数据?的主要内容,如果未能解决你的问题,请参考以下文章

修复更新后显示错误的 android studio Firebase 广告库

以降序显示帖子

如何更改firebase存储的位置?

使用 nativescript-plugin-firebase 添加带有查询的事件侦听器

如何在使用firebase作为服务器或数据库的cordova应用程序中实现通知

在 Firebase 实时数据库中保存数据 Android Studio Kotlin