【问题标题】:Users & Friends Design and Implementation with Firebase (AngularFire)用户和朋友使用 Firebase (AngularFire) 进行设计和实现
【发布时间】:2016-10-18 13:49:01
【问题描述】:

我正在尝试将 AngularFire 用于我的 Google Firebase Ionic 应用。我尤其面临数据库设计和之后实施的问题。

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

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

例子:

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);

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    使用security rules 控制谁可以查看谁的数据。例如user1 的数据将对user1 或在friendlist/user1/ 中拥有userid 的人可见

    【讨论】:

    • 谢谢,效果很好。是的,我知道我需要一条直接的途径来要求更好的性能,但没有考虑过这种可能性。我很感激:)
    • 我正在尝试使用 Java 实现相同的目的,只是好奇所以这里的友谊包含用户对象数组?这会导致激进的数据库增长和不良做法吗?如果你能帮我解决这个问题,不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多