用户和朋友使用 Firebase (AngularFire) 进行设计和实施

Users & Friends Design and Implementation with Firebase (AngularFire)

我正在尝试为我的 Google Firebase Ionic 应用程序使用 AngularFire。我特别面临数据库设计和之后实施的问题。

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

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

示例:

User
   User1
       Name
       Email
       Friends
          Friend1
          Friend2

或者是否应该有一个单独的 "friendships" 树,其节点采用两个用户 ID,因此将它们连接起来?示例:

Friendships
    Friendship1
        User1
        User2
    Friendship2
        etc...

此外,考虑到我目前实施的第一个选项,我通过以下方式检索我的朋友:

    var friendsRef = firebase.database().ref('users/' + firebase.auth().currentUser.uid + '/friends');

    $scope.friends = $firebaseArray(friendsRef);

效果很好。问题变成了,我如何在他们自己的数据库用户位置检索与每个朋友关联的数据,例如姓名和电子邮件?

我希望有人能给我一些建议来帮助我,因为我已经尝试解决这个问题很长时间了。非常感谢!

我会选择第一个选项。但是随着数据的扁平化。

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

这样您在查询用户数据时就不会检索整个数据(使用好友列表)。

使用update()方法一次将数据保存在多个位置。如果有人想删除一个用户的朋友,您可以update()将两个用户从彼此的列表中删除。

使用security rules控制谁可以看到谁的数据。例如 user1 的数据将对 user1useridfriendlist/user1/

中的人可见