如何用firebase构建友谊数据?

时间:2016-08-15 16:01:10

标签: android firebase firebase-realtime-database

我是firebase的新手,我尝试构建数据以存储我的应用用户之间的友谊。

我的数据结构如下:

    { users: {
        user_1: {
          name: John
        },
        user_2: {
          name: Jack
        },
       user_3: { 
          name: Georges
       },
   }, 
   { friendships : {
      user_1 : {
        user_2: {
            name: Jack
          },
        user_3: {
            name: Georges
      },
      user_3: {
        user_1: {
            name: John
        },
         user_2: {
            name: Jack
        }
    }
}

我不知道我的数据结构是否正常,但我想知道如果用户更改其名称,更新友谊中名称的最佳方法是什么,如何轻松更新友情中的引用(浏览每个节点?)?

如果有人能帮我理解正确的方法,感谢你。

一个。

3 个答案:

答案 0 :(得分:5)

您所遵循的数据库结构有点混乱,可能有点难以浏览它,我建议: -

  Users{
    userID_1 : {
      username : “Shelly Morgan”  ,     
      useremail : “sehlly1@yahoo.co.in”
       friends :{
        userID_2 : true,
        userID_3 : true,
        userID_4 : true,
                 } 
           },
    userID_2 : {
     username : “Mikael”  ,     
     useremail : “mike1232@gmail.com”
       friends :{
        userID_1 : true,
        userID_4 : true,
                 } 
           },
    userID_3 : {
     username : “Lenoard Narish”  ,     
     useremail : “leo_nar12@gmail.com”
      friends :{
        userID_1 : true,
        userID_2 : true,
        userID_4 : true,
                 } 
           },
    userID_4 : {
     username : “Rob Stark”  ,     
     useremail : “robStar781@gmail.com”
      friends :{
         userID_1 : true
                 } 
           }

}

通过这种方式,您只将userID个朋友存储在该用户数据库中,您只需更改friends_uid节点中的值。检索friends数据库: -

1。)刚刚点击friends

User节点

2.)倾听每一位朋友uid

3。)并使用所需的uid点击数据库以检索相应friend的数据库

请阅读此处的文档以检索数据:https://firebase.google.com/docs/database/android/retrieve-data

答案 1 :(得分:5)

您的结构几乎是好的,但我会将友谊节点更改为:

    { users: {
        user_1: {
          name: John
        },
        user_2: {
          name: Jack
        },
       user_3: { 
          name: Georges
       },
   }, 
   { friendships : {
      user_1 : {
        user_2: true,
        user_3: true,
      user_3: {
        user_1: true,
        user_2: true
    }
}

这类似于Dravidian所显示的内容,但根据您拥有的朋友数量,最好不要将用户朋友列表存储在用户帐户详细信息节点下,因为如果您有1000多个朋友,则必须下载1000名孩子,即使你只是想得到像他的名字一样的单一价值。

答案 2 :(得分:0)

您不应该在name结构中存储friendships,而只应存储用户名。所以friendships看起来应该更像这样:

{
    friendships: {
        user_1: [
            user_2,
            user_3
        ],
        user_2: [
            user_1
        ]
    }
}

这样,如果您更新name,则只能在一个位置(users)进行更新。您可以使用friendships中的用户名交叉引用users中的用户名,以查找name

如果您使用push()进行友谊,结构会稍微改变,但同样的原则适用:

{
    friendships: {
        user_1: {
            -KPE008BeSzNR5D3W7t3: user_2,
            -KPE0nF4AW7Lj66xTLUu: user_3
        },
        ...
    }
}