Java 删除具有特定子值的Firebase节点

Java 删除具有特定子值的Firebase节点,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有以下firebase数据库结构。我需要删除具有特定dMoble值的整个密钥 我尝试了下面的代码,但它不工作 String emailID= singleToneClass.getInstance().getData(); mDataBase=FirebaseDatabase.getInstance(); mReferenceBooks=mDataBase.getReference("books"); mReferenceBooks.o

我有以下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) {

                                }
                            });
更改此项:

@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();
   }
您的引用位于节点book,要访问密钥,需要在其中迭代,然后使用getKey