這裏努力是另一種方式,你可以創建一個「朋友刪除請求」的特殊節點,所以客戶端只寫這個節點,那麼服務器處理刪除。
首先,看一下這個數據庫結構
{
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