我具有以下firebase数据库结构。我需要删除具有特定dMoble
值的整个密钥
我尝试了下面的代码,但是没有用
String emailID= singleToneClass.getInstance().getData();
mDataBase=FirebaseDatabase.getInstance();
mReferenceBooks=mDataBase.getReference("books");
mReferenceBooks.orderByChild("dMoble").equalTo(emailID)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mReferenceBooks.child(dataSnapshot.getKey()).removeValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
更改此:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mReferenceBooks.child(dataSnapshot.getKey()).removeValue();
}
对此:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
mReferenceBooks.child(ds.getKey()).removeValue();
}
您的引用位于节点books
上,要访问key
,您需要在其内部进行迭代,然后使用getKey()
答案 1 :(得分:0)
您不能删除可以清除的内容,或者另一种解决方案是可以将所有节点值存储在变量中,然后删除所有数据,然后在没有dMobile节点的情况下重新创建。