我正在尝试从我的firebase数据库中引用smth3
|smth1
---|smth2
---|smth3
---|smth4
---|smth5
代码:
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("smth1")
.child("smth2");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int count = 0;
DataSnapshot needSnapshot = null;
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
needSnapshot = snapshot;
if(count == getPosition()){
break;
}
count++;
}
mDatabase.child(needSnapshot.getKey()).removeValue();
notifyItemRemoved(getPosition());
notifyItemRangeChanged(getPosition(), getItemCount());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
此代码始终删除smth2。
获得引用后,我想删除它的所有子项和值 请帮助获取smth3的参考
答案 0 :(得分:3)
Firebase数据库仅存储值及其关联路径。如果给定路径下没有值,则会自动删除该路径。由于smth3
是smth2
下的唯一值,因此删除smth3
也会删除smth2
。
这个逻辑与在smth2
下编写值时自动创建smth3
这一事实密切相关。路径会根据需要自动创建,并在空白时删除。
答案 1 :(得分:0)
首先,您需要将此依赖项添加到您的应用级build.gradle文件中,以将实时数据库添加到您的应用中:
compile 'com.google.firebase:firebase-database:11.0.2'
然后你可以像这样读/写任何数据库:
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("smth1").child("smth2").child("smth3").removeValue();
有详细记录here。