无法弄清Firebase数据库结构

时间:2016-07-29 23:51:31

标签: ios swift firebase firebase-realtime-database

我已经完全重做了这个数据库几次,我无法弄清楚这一切的难题。

目前的基本想法是用户发帖,人们可以提交回复。在视图1上,查看“已启动的帖子”,在视图2上,您可以看到您回复的所有帖子,在视图3中,您可以单击特定帖子并查看所有回复,在视图4中,您可以看到详细信息任何特定回复的页面。

我已经完成了所有工作,但在实施好友系统和删除系统后,我遇到了两个主要问题。

我将做一个示例帖子来帮助解释:

查看1:

朋友列表中的一堆主题

谈论猫 谈论汽车 谈谈斯威夫特

观看2:

发布你过去加入了关于狗的事情 发布过去你加入过关于汽车的帖子 关于你刚回应的猫的帖子

点击猫贴后查看3:

用户1:猫吮吸 用户2:猫很酷

点击用户后查看4:

该帖子及该用户的详细视图

鲍勃 Bobs图片 “猫吮吸”

我需要用户能够自定义视图3和4的视图,因为我希望他们能够删除某些帖子和个别帖子。

所以不是猫下有用户1和用户2,如果有人真的不喜欢别人说的话,或者只是来自用户1的巨魔提交,他们就可以删除它。

问题是我目前只是从帖子的“回复”子项下面提取所有回复。我可以通过从数组中抓取它来暂时从视图中删除帖子,但是当页面重新加载时再次加载所有帖子,显然用户需要他们自己的位置,他们会跟踪对主帖的个人回复。

例如,我需要一些方法让每个用户都能引用“猫很酷”和“猫吮吸”

在视图2上,可以通过在用户信息中删除对该帖子的引用来轻松删除这些信息,该信息仅在他们首先响应时创建,但除此之外我不知道如何获取个人信息回复用户。

非常粗略,因为在这一点上我已经多次重写了这一切:

Users
   09283490823
      RepliedToPosts
          ABCDEFG : true
      FriendsPosts
           friendUID : postID
           friendUID: postID
           // reworked all of this, dunno how I want this structured anymore but this part will be ok

  posts:
      ABCDEFG
         *replies*

所以我正在观察View1上的friendsPosts,观察我可以删除的View2上的repliedToPosts,然后在view3上我只是进入帖子并查看所有回复,然后在视图4上查看个人水平。

我让一切都运转正常,花花公子直到最后我忘记了我想要删除View3上的个别帖子,而我还没有找到实现它的方法。

有什么想法吗?我不能只是向所有“参与者”发送个人回复,因为人们可以加入最近...真的不知道。

1 个答案:

答案 0 :(得分:0)

你需要做的是"扇出"你的数据尽可能多。 这意味着将数据(在您的情况下为responeses)复制到db中的多个位置,以便更容易获取它们。 你可以有一个名为" postsReplies"使用帖子ID和回复以及另一个名为" repliesByCategory"的节点在哪里你会看到类似的东西。

Cats: {
 some_cat_reply_Id: {
   // the reply data
}
}

扇出发生在客户端 - 当用户发布回复时,它会发布到所有节点。

以下是一些链接,可以帮助您了解更多关于"粉丝"数据:

https://medium.com/@gilg/from-sql-to-firebase-how-to-structure-the-db-for-a-social-network-app-95b0aa5664c0?source=linkShare-af537a57f12f-1469861757

https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html?m=1