我正在尝试将AngularFire用于我的Google Firebase Ionic应用。我特别面临着数据库设计和事后实现的问题。
我的目标是为用户提供名称和电子邮件等基本信息。
每个用户都应该能够添加好友。这些朋友存储在列表中。在Firebase数据库中,最好的方法是什么?用户应该有一个指向其他用户ID的friendlist节点吗?
示例:
User
User1
Name
Email
Friends
Friend1
Friend2
或者是否应该有一个单独的“友谊”树,其节点带有两个用户ID并因此连接它们?例如:
Friendships
Friendship1
User1
User2
Friendship2
etc...
另外,鉴于我描述的第一个选项,我到目前为止实现了这个选项,我通过以下方式检索我的朋友:
var friendsRef = firebase.database().ref('users/' + firebase.auth().currentUser.uid + '/friends');
$scope.friends = $firebaseArray(friendsRef);
这很有效。问题是,如何在自己的数据库用户位置检索与每个朋友关联的数据,如姓名和电子邮件?
我希望有人可以给我一些建议来帮助我,因为我一直试图解决这个问题很长一段时间。非常感谢!
答案 0 :(得分:0)
我会选择第一个选项。但随着数据的扁平化。
users
user1
name
email
user2
user3
friendlist
user1
user2
user5
user11
user2
user3
在查询用户数据时,您无法检索整个数据(使用好友列表)。
使用update()
方法一次将数据保存在多个位置。如果有人想删除用户的朋友,您可以update()
将这两个用户从彼此的列表中删除。
使用security rules来控制哪些人可以查看哪些人的数据。例如,user1
的{{1}}或user1
中userid
的人可以看到friendlist/user1/
的数据