Firebase数据库中的友谊

时间:2016-11-25 22:06:35

标签: android firebase firebase-realtime-database

我正在为狗主人制作应用程序。我想在狗之间建立友谊。用户可以有n只狗和狗可以有n个朋友。我不确定如何以最有效的方式实现Firebase数据库。我以为我会有一个节点友谊,我会像这样存储信息友谊:

friendships:
     id_dog
        id_friend_dog1: true
        id_friend_dog2: true

我需要得到当前狗的朋友。此外,我需要能够得到其他不是朋友的狗。你将如何实现这个用例?

由于

1 个答案:

答案 0 :(得分:0)

如何在Firebase中对数据建模通常取决于您希望如何在应用中使用该数据。

在你的场景中,还有一个有趣的问题:友谊本质上是双向的吗?换句话说:如果dog1是狗2的朋友,这是否自动意味着dog2必须是dog1的朋友?如果是这样,您将需要按照我在Best way to manage Chat channels in Firebase

中描述的方式对其进行建模
friendships:
    id_dog1-id_dog2: true
    id_dog1-id_dog3: true

此外,你还想按照自己的说法去做:为每只狗保留一份朋友名单。

你会发现这意味着你要保留重复的数据:每只狗的朋友列表和狗之间友谊的“主列表”。

这种数据复制在NoSQL数据库中很常见,Firebase也不例外。

更新(评论)

NoSQL解决方案中的数据建模总是取决于您希望如何使用数据。如果您想获得特定狗的朋友列表,您应该为每只狗存储一个朋友列表。

dogFriends
  dog1
    dog2: true
    dog3: true
  dog1
    dog1: true
  dog3
    dog1: true

现在,您可以通过加载/dogFriends/{dogId}轻松找到特定狗的朋友。然后循环遍历这些结果并加载每个朋友的详细信息。