我正在为狗主人制作一个应用程序。我想在狗之间结交朋友。用户可以有n只狗,狗可以有n个朋友。我不确定我应该如何以最有效的方式实现Firebase数据库。我在想我应该有一个节点友情,在那里我可以像这样存储信息友情:
friendships:
id_dog
id_friend_dog1: true
id_friend_dog2: true我要找现在这条狗的朋友。此外,我需要能够得到其他狗,还没有朋友。您将如何实现此用例?
谢谢
发布于 2016-11-26 07:25:42
如何在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}轻松找到特定狗的朋友。然后循环这些结果并加载每个朋友的详细信息。
https://stackoverflow.com/questions/40812778
复制相似问题