[英]How to Remove one child node from firebase with out deleting all child nodes
我需要在單擊按鈕時從Firebase中刪除一個子節點,但是當我使用.RemoveValue()時,它會刪除所有的子節點,而不僅僅是一個。
LeaderClass leader = new LeaderClass((uploadCurrent.getName()).trim(),
(uploadCurrent.getCategory()).trim(),(Integer.toString(mCountLikes )));
mDatabaseLike.removeValue();
完整的代碼如下:
//Count Likes functionality
mDatabaseRef.child((uploadCurrent.getName())).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
{
//Counting likes in 'Likes' database by counting children
mCountLikes = (int) dataSnapshot.getChildrenCount();
holder.mCountbtn.setText(Integer.toString(mCountLikes ) + " Likes" );
LeaderClass leader = new LeaderClass((uploadCurrent.getName()).trim(),
(uploadCurrent.getCategory()).trim(),(Integer.toString(mCountLikes )));
mDatabaseLike.push().setValue(leader);
}
else{
holder.mCountbtn.setText("0 Likes");
LeaderClass leader = new LeaderClass((uploadCurrent.getName()).trim(),
(uploadCurrent.getCategory()).trim(),(Integer.toString(mCountLikes )));
mDatabaseLike.removeValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
這是我的firebase結構:
CountLikes: {
"-LXBQRbkiL3fZUnRedrB": {
category: "Technology"
name: "Project 467"
vote: "1"
}
在DatabaseReference
上調用removeValue
,Firebase會刪除該引用處的所有數據。 看起來您的mDatabaseLike
指向CountLikes
,因此調用mDatabaseLike.removeValue()
會刪除該位置下的所有數據。
要刪除單個子節點,您需要知道要刪除的類似鍵,即您共享的JSON中的-LXBQRbkiL3fZUnRedrB
。
當您知道這一點時,僅刪除一個子節點就很簡單:
mDatabaseLike.child("-LXBQRbkiL3fZUnRedrB").removeValue();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.