【问题标题】:How to structure (save / retrieve) when needing to filter users's posts based on certain key?当需要根据特定键过滤用户帖子时如何构造(保存/检索)?
【发布时间】:2017-01-02 12:40:09
【问题描述】:

我正在构建一个应用程序,用户可以在其中查看特定于某个键的帖子。就像,如果他们想看到关于餐馆的帖子,他们会得到关于餐馆的帖子。我该如何构建它?

现在,用户每次发帖,都会有一个通用的posts节点,每个帖子都保存在它下面,供所有用户使用。

那么,我该如何告诉 Firebase,“仅从该节点下获取这些特定帖子?”一个问题是:我不希望帖子必须保存它们的内容,即帖子中没有像 restaurant : joe's pizza 这样的键值对。

相反,我正在考虑使用主题节点 (topics),然后在其下方保存对帖子的引用。因此,比如说,节点Pizza 下面有 3 个子节点,它们都有与帖子的键匹配的键(同样,帖子保存在单独的节点中,它们存储数据、文本和图像。)。比如说,节点Ice Cream 有 4 个孩子 - 引用了 4 篇关于冰淇淋的帖子。因此,如果我是用户,并且我想查看有关冰淇淋的帖子,我需要 Firebase 询问,“嘿,找到 Ice Cream 节点,然后检索下面的所有引用,然后抓取每个帖子的帖子那些引用,基于它们的键。”

这个问题有意义吗?

我非常感谢任何帮助。 (我是一名新的编码员,当其他人回答我的问题时,我学到的最多)。谢谢!

【问题讨论】:

  • 您可以在迈克尔提到的结构化数据指南中尝试indexing,在您的情况下将“组”替换为“主题”。您可以为每个帖子存储一个“主题”值(例如:主题:披萨),然后在其各自的“主题”节点中存储对有关披萨的帖子的引用。

标签: ios swift firebase firebase-realtime-database nosql


【解决方案1】:

要以最佳方式使用 Firebase,您绝对需要明智地思考如何构建数据。许多最佳实践可以在in the structuring data guide 找到。关键要点:

  1. 尝试按照人们的看法来构建数据。
  2. 如果您确实需要切块和切块,则一次只能对一个属性执行此操作。对于其他所有内容,您都需要进行非规范化。
  3. 从 Firebase 获取多个节点并不是那么昂贵 - 因为有一个开放的双向套接字连接,您可以快速进行多次获取。

最终,您需要根据应用程序的特定需求仔细规划数据结构。

【讨论】:

  • 我已经弄清楚如何构建数据,但现在,我正在尝试为 FCM 设置一个后端服务器(为我的 Firebase 应用程序提供服务)。你知道我会怎么做吗?我浏览了他们的文档,这里是他们遗漏的内容:包含用户设备令牌的数据是如何结构化的?它是如何访问和使用的?如何从 Firebase 客户端应用程序与服务器通信? (我可以连接到 FCM,如文档所示,但它没有说明之后要做什么)。
  • 您需要获取通过在客户端注册 FCM 获得的令牌,并将返回的注册 ID 放在服务器可以访问的地方(实时数据库适用于此)。然后您可以使用 Firebase Admin SDK 向注册的 ID 发送消息。
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 2015-11-10
  • 2018-07-08
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
相关资源
最近更新 更多