我正在为狗主人制作应用程序。我想在狗之间建立友谊。用户可以有n只狗和狗可以有n个朋友。我不确定如何以最有效的方式实现Firebase数据库。我以为我会有一个节点友谊,我会像这样存储信息友谊:
friendships:
id_dog
id_friend_dog1: true
id_friend_dog2: true
我需要得到当前狗的朋友。此外,我需要能够得到其他不是朋友的狗。你将如何实现这个用例?
由于
答案 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}
轻松找到特定狗的朋友。然后循环遍历这些结果并加载每个朋友的详细信息。