我有以下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”。
有人知道我错过了什么吗?
发布于 2018-09-17 06:08:13
您提供了错误的路径,然后您尝试删除错误的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());
}
});
https://stackoverflow.com/questions/52358639
复制相似问题