我正在尝试从Firebase中的节点中删除值。 似乎没有达到onDataChange。
我尝试查找文档和文章,并使用了我在多个地方引用的一些代码(例如Remove Specific value From Firebase Database)。不会调用onDataChange中的日志语句,而是调用之前的日志语句。电子邮件的范围很好,日志声明可以看到
I/emailRemove: 111@aol.com
I/removeEmail: Inside Method
在此示例中,我想删除电子邮件“111@aol.com”的任何区域:
private void removeEmail() {
Log.i("emailRemove", email);
Log.i("removeEmail","Inside Method");
Query emailQuery = mDatabase.child("emailAddress").equalTo(email);
emailQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot emailSnapshot: dataSnapshot.getChildren()) {
Log.i("snapshot", emailSnapshot.toString());
Log.i("snapshotRef", emailSnapshot.getRef().toString());
emailSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("TAG", "onCancelled", databaseError.toException());
}
});
}
答案 0 :(得分:0)
由于您希望按子属性进行过滤,因此应使用orderByChild(...)
:
Query emailQuery = mDatabase.orderByChild("emailAddress").equalTo(email);
emailQuery.addListenerForSingleValueEvent(new ValueEventListener()
您还需要确保对RC9...
运行此查询,因为这是子节点具有emailAddress
属性的唯一节点。