[英]How to Remove one child node from firebase with out deleting all child nodes
I need to remove a child node from firebase on a button click but when I use .RemoveValue() it deletes all the child nodes not just one. 我需要在单击按钮时从Firebase中删除一个子节点,但是当我使用.RemoveValue()时,它会删除所有的子节点,而不仅仅是一个。
LeaderClass leader = new LeaderClass((uploadCurrent.getName()).trim(),
(uploadCurrent.getCategory()).trim(),(Integer.toString(mCountLikes )));
mDatabaseLike.removeValue();
The full code is below: 完整的代码如下:
//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) {
}
});
Here is my firebase structure: 这是我的firebase结构:
CountLikes: {
"-LXBQRbkiL3fZUnRedrB": {
category: "Technology"
name: "Project 467"
vote: "1"
}
When you call removeValue
on a DatabaseReference
Firebase removes all data at that reference. 在DatabaseReference
上调用removeValue
,Firebase会删除该引用处的所有数据。 It looks like your mDatabaseLike
points to CountLikes
, so calling mDatabaseLike.removeValue()
removes all data under that location. 看起来您的mDatabaseLike
指向CountLikes
,因此调用mDatabaseLike.removeValue()
会删除该位置下的所有数据。
To remove a single child node, you'll need to know the key of the like to remove, ie the -LXBQRbkiL3fZUnRedrB
in the JSON you shared. 要删除单个子节点,您需要知道要删除的类似键,即您共享的JSON中的-LXBQRbkiL3fZUnRedrB
。
When you know that, removing just that one child node is as simple as: 当您知道这一点时,仅删除一个子节点就很简单:
mDatabaseLike.child("-LXBQRbkiL3fZUnRedrB").removeValue();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.