问题描述
我有以下Firebase数据库
课程:
Id_lesson : "XXX1"
Name_lesson : "Geography"
Date_lesson : "25/09/2018"
Id_lesson : "XXX2"
Name_lesson : "Mathematics"
Date_lesson : "25/09/2018"
Id_lesson : "XXX1"
Name_lesson : "Physics"
Date_lesson : "26/09/2018"
Id_lesson : "XXX2"
Name_lesson : "Biology"
Date_lesson : "26/09/2018"
我需要从特定日期删除所有课程条目(共享相同的Date_lesson子级)。
我尝试了这种方法:
private void Delete_CR_Lessons(Date date) {
final String date_to_delete_string = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
Log.i("Tag", "date to delete : "+date_to_delete_string);
DatabaseReference drTest = FirebaseDatabase.getInstance().getReference();
drTest.child("lessons").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot:snapshot.getChildren()) {
Log.i("Tag", "iteration for dataSnap");
if(dataSnapshot.hasChild(date_to_delete_string)){
dataSnapshot.getRef().setValue(null);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TAG: ", databaseError.getMessage());
}
});
在执行该方法期间(例如,字符串日期为“ 25/09/2018”),不会从Firebase数据库中删除条目。 我看到了我指定的两个日志,但是我也看到了一个名为
“我/聊天:uid = 10298(com.example.myname.lessonsmanagment)相同的2行”
我认为该方法不起作用,因为它无法同时检测到日期为25/09/2018的两个课程(地理和数学)。
有谁知道如何使它起作用?
1楼
首先,您需要查询/排序带有日期的数据
您可以使用此示例简单地进行操作。
mRef.child("lessons").orderByKey().equalTo(Date_lesson)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) {
String key = postsnapshot.getKey();
dataSnapshot.getRef().removeValue();
}
});
mRef
是您的lessons
分支分支参考