现在,我已经完全重做了这个数据库几次,但我想不通这一切。

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

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

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

查看1:

您朋友列表中的一堆主题

谈论猫
谈论汽车
谈论雨燕

查看2:

发布您过去参加过的关于狗的活动
张贴您过去参加过的关于汽车的文章
您刚刚回应的关于猫的帖子

点击猫咪帖子后查看3:

使用者1:猫吮吸
使用者2:猫很酷

单击用户后查看4:

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

鲍勃
鲍勃图片
“猫吮吸”

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

因此,如果某人确实不喜欢某人说的话,或者不是用户1的用户1和用户2,或者只是用户1的巨魔提交,则可以将其删除。

问题是我目前只是从帖子的“回复”子项下提取所有回复。我可以通过从数组中抓取临时删除视图中的帖子,但是重新加载页面时将其加载重新整理所有帖子,因此显然用户需要他们自己的位置,他们一直在跟踪对主帖子的各个回复。

例如,我需要为每个用户提供某种方式来引用“猫很酷”和“猫很烂”

在View 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,观察了可以删除的View 2上的replyToPosts,然后在view3上,我进入了帖子并查看了所有回复,然后在View 4上进一步查看了各个级别。

直到最后我忘了我希望能够删除View3上的各个帖子,并且一切都还不错,但我还没有找到实现它的方法。

有任何想法吗?我不能只是将个人回复发送给所有“参与者”,因为人们可以迟到……真的不知道。

最佳答案

您需要做的是尽可能“散布”您的数据。
这意味着将数据(在您的情况下为响应)复制到数据库中的多个位置,这样将更容易获得它们。
您可以有一个名为“ 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

10-01 23:05
查看更多