如何在需要根据特定密钥过滤用户的帖子时构建(保存/检索)?

时间:2016-08-25 23:19:29

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

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

现在,每次用户发布内容时,都会有一个普通的posts节点,并且所有用户都会在其下保存每个帖子。

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

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

这个问题有意义吗?

我真的很感激任何帮助。 (我是一个新的编码员,当其他人回答我的问题时,我学得最多)。谢谢!

1 个答案:

答案 0 :(得分:1)

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

  1. 尝试按照人们查看数据的方式构建数据。
  2. 如果您确实需要切片和骰子,则一次只能在一个属性上执行此操作。对于其他一切,你需要进行反规范化。
  3. 从Firebase获取多个节点并不是那么昂贵 - 因为有一个开放的双向套接字连接,你可以快速进行多次提取。
  4. 最终,您需要根据应用程序的特定需求仔细规划数据结构。