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

时间:2016-10-18 13:49:01

标签: javascript angularjs firebase firebase-realtime-database angularfire

我正在尝试将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);

这很有效。问题是,如何在自己的数据库用户位置检索与每个朋友关联的数据,如姓名和电子邮件?

我希望有人可以给我一些建议来帮助我,因为我一直试图解决这个问题很长一段时间。非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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

在查询用户数据时,您无法检索整个数据(使用好友列表)。

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

使用security rules来控制哪些人可以查看哪些人的数据。例如,user1的{​​{1}}或user1userid的人可以看到friendlist/user1/的数据