这里努力是另一种方式,你可以创建一个“朋友删除请求”的特殊节点,所以客户端只写这个节点,那么服务器处理删除。
首先,看一下这个数据库结构
{
users: {
a: {
friends: {
b:Jhon,
c:Ted
},
}
b: {
friends: {
a: Tom
}
},
c: {
friends:{
a: Tom
}
}
}
friend_removal_request : {
<push_id>: {
first_user: a,
second_user: b
}
}
}
- 服务器连接
child_added
监听到friend_removal_request
- 如果用户想要删除他们的朋友,他们的客户写了一个新的条目(通过使用
DatabaseReference.push()
方法)至friend_removal_request
。 first_user
是用户的ID,second_user
是他们的朋友的ID
- 然后在服务器上的监听器将被解雇,服务器现在可以继续通过设置
null
值删除他们的友谊(或叫remove()
),以/users/$first_user/friends/$second_user
和/users/$second_user_user/friends/$first_user
- 删除好友后,服务器删除该请求
snapshot.ref.remove()
现在,侦听器只附加到一个节点。
这是我的想法,让我知道如果你有这个方法的另一个问题。 希望这有助于:)
如何附加'child_changed'事件?每次更改/更新每个孩子(或用户)的数据时,都会触发该事件。 – Wilik
@Wilik在你的方式我必须保持所有数据在一个变量,并在每一个变化得到什么改变。 我不高效 –
好,那么唯一的办法就是每个'userid/friends'只附加'child_removed'事件,你的代码无论如何都在服务器上 – Wilik