我是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
}
}
}
我不知道我的数据结构是否正常,但我想知道如果用户更改其名称,更新友谊中名称的最佳方法是什么,如何轻松更新友情中的引用(浏览每个节点?)?
如果有人能帮我理解正确的方法,感谢你。
一个。
答案 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
},
...
}
}