0

我正在尝试为我的Google Firebase Ionic应用使用AngularFire。我特别面临着我的数据库设计和后续实施的问题。用户和朋友使用Firebase设计和实施(AngularFire)

我的目标是让用户拥有一些基本信息,如姓名和电子邮件。

每个用户都应该可以添加好友。这些朋友存储在一个列表中。在Firebase数据库中进行此操作的最佳方式是什么?用户是否应该有一个指向其他用户标识的好友列表节点?

例子:

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

我会去第一个选项。但是数据变平了。

users 
    user1 
     name 
     email 
    user2 
    user3 
    friendlist 
    user1 
     user2 
     user5 
     user11 
    user2 
    user3 

这样你就不会在查询用户数据时检索整个数据(和好友列表)。使用update()方法一次将数据保存在多个位置。如果有人想要删除某个用户的朋友,则可以update()将两个用户从对方列表中删除。

使用security rules来控制谁可以查看谁的数据。例如,一个user1的数据将可见user1或谁有他们的useridfriendlist/user1/

+0

谢谢,这很好。是的,我知道我需要一条直接的路径来呼唤更好的表现,但没有考虑到这种可能性。我很感激:) – Robin

+0

我试图用Java实现相同,只是好奇所以这里友谊包含用户对象的数组?这是否会导致数据库的激增和不良习惯?感谢您能否清除我。 – channae

相关问题