java - 如何在不删除所有子节点的情况下从 Firebase 中删除一个子节点
问题描述
我需要在单击按钮时从 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) {
}
});
这是我的火力基地结构:
CountLikes: {
"-LXBQRbkiL3fZUnRedrB": {
category: "Technology"
name: "Project 467"
vote: "1"
}
解决方案
当您调用Firebase 时,会删除该引用处removeValue
的DatabaseReference
所有数据。看起来您mDatabaseLike
指向CountLikes
,因此调用mDatabaseLike.removeValue()
会删除该位置下的所有数据。
要删除单个子节点,您需要知道要删除的like 的键,即-LXBQRbkiL3fZUnRedrB
您共享的JSON 中的键。
当您知道这一点时,仅删除一个子节点就很简单:
mDatabaseLike.child("-LXBQRbkiL3fZUnRedrB").removeValue();
推荐阅读
- javascript - 如何使用 ECMAScript 6 模块导入 PlotlyJS
- database - 当我在本地主机服务器中处理我的数据时,它的读取速度非常快,但是当我将数据库连接到 mongolab 时,数据读取速度非常慢
- c++ - 传递给函数时找不到c ++向量?
- python - numpy.ndarray 值不能与 if 语句进行比较
- php - 将行从 HTML 表单插入 sql 数据库时出现问题。我究竟做错了什么?我对此很陌生
- javascript - ES 6 到 ES 5 需要帮助修复
- python - ModuleNotFoundError:没有名为“sklearn.utils._joblib”的模块
- mysql - 数据库 - 连接不可用
- android - 使用 Camera 和 Android Image Cropper 库时如何修复以下错误
- ruby-on-rails - Rails 服务器和 Rails 控制台崩溃:require': cannot load such file -- rack/protection (LoadError)