2016-07-29 67 views
0

我已经完全重做了这个数据库几次,我无法弄清楚它的全部难题。无法找出Firebase数据库结构

当前的基本思想是用户发布帖子,人们可以提交回复。在视图1上查看“已启动的帖子”,在视图2上查看已回复的所有帖子,在视图3上可以点击进入特定帖子并查看所有回复,在视图4上可以看到详细信息页面的任何具体答复。

我有这一切工作,但我有两个主要问题后,实现一个朋友系统和删除系统。

我做出了榜样后,以帮助解释:

视图1:

从好友列表中

关于猫的通话 谈汽车 谈了一堆话题的约斯威夫特

查看2:

发布您已经加入了关于狗的过去 后你已经加入了关于汽车过去 后你刚刚回答了

查看3点击猫猫后发布:

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

查看4点击用户的用户后:

该职位的详细视图,该用户

鲍勃 鲍勃图片 “猫吸”

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

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

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

比如我需要一些方法为每一位用户都“猫是酷”和“猫吸”

上查看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* 

所以我观察上视图1的friendsPosts,观察上查看2 repliedToPosts,我可以删除,然后再在view3我只是进入帖子和查看所有答复,然后进一步查看4在个人层面查看一个。

我有一切工作,罚款和花花公子,直到我最后忘记了我想要能够删除View3上的单个帖子,我还没有找到实现该方法的方法。

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

回答

0

你需要做的是尽可能地“扇出”你的数据。 这意味着复制数据(在你的情况下的反应)到数据库中的多个位置,所以它会更容易得到它们。 你可以有1个名为“postsReplies”的邮件标识和回复节点,另一个节点名为“respondByCategory”,你会看到类似的东西。

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

+0

我可能会超过在我的脑海复杂,但我不知道我将如何为当前用户提供一个回复节点。 像它必须是用户 - > JoinedInOnPosts->猫 - >所有的猫回复 但我没有看到一种方式来获得答复给用户。 如果用户B回复猫邮件,然后用户A稍后加入,用户A将如何收到用户关于帖子B的个人回复? 它必须在用户节点下才能删除,否则他们会删除所有人的信息。 我在这里基地哈哈? –

+0

这有点复杂。我相信答案是为每个用户复制节点,虽然我不是100%确定的。对于复杂的查询,我认为Firebase可能不太适合后端解决方案 – Gil