我有以下Firebase数据库:
我需要删除所有共享相同“ date_cours”类型的条目/数据库对象。
我尝试了以下方法删除所有具有相同date_cours“ 10/09/2018”的条目,例如:
private void Delete_CR_Lessons(Date date) {
final String date_a_supprimer_string = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
DatabaseReference drTest = FirebaseDatabase.getInstance().getReference("cours");
drTest.child("date_cours").orderByKey().equalTo("10/09/2018")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("Tag", "test1");
for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) {
Log.i("Tag", "test2");
String key = postsnapshot.getKey();
dataSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TAG: ", databaseError.getMessage());
}
});
}//fin de la methode Delete_CR_Lessons
我在执行该方法期间没有任何错误。 在日志中,我可以看到日志“ test1”,但看不到日志“ test2”。
有人知道我想念什么吗?
答案 0 :(得分:1)
您提供了错误的路径,然后尝试删除错误的datasnapshot
值,例如,尝试使用:postsnapshot.getRef().removeValue();
而不是dataSnapshot.getRef().removeValue();
,因为dataSnapshot
没有指向到要删除的值。这就是为什么您使用for
循环从数据库中获取所有值节点的原因。检查下面的代码:
DatabaseReference drTest = FirebaseDatabase.getInstance().getReference("cours");
drTest.orderByChild("date_cours").equalTo("01/10/2018")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("Tag", "test1");
for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) {
Log.i("Tag", "test2");
String key = postsnapshot.getKey();
postsnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TAG: ", databaseError.getMessage());
}
});