Удалять можно по одному или один раз; Я просто хочу удалить все имена, которые находятся в обеих БД, из surveyList
.
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference completedSurveysRef = rootRef.child("users").child(uid).child("completedSurveys");
Теперь, чтобы удалить все значения в узле completedSurveys
сразу, вы должны использовать следующее строка кода:
completedSurveysRef.removeValue();
Если вы хотите удалить каждого дочернего элемента отдельно, используйте следующие строки кода:
completedSurveysRef.child("sld0000001").removeValue();
completedSurveysRef.child("sld0000002").removeValue();
Изменить:
Согласно вашему комментарию:
Уважаемый Алекс, я хочу удалить все дочерние узлы из surveyList
, которые находятся в CompleteList. sld0000001 и sld0000002 находятся в completedList
и SurveyList, поэтому я хочу удалить эти значения из surveyList
, а не из comletedList
.
Используйте следующие строки кода:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference completedSurveysRef = rootRef.child("users").child(uid).child("completedSurveys");
DatabaseReference surveyListRef = rootRef.child("users").child(uid).child("surveyList");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String surveyId = ds.getKey();;
surveyListRef.child(surveyId).removeValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
completedSurveysRef.addListenerForSingleValueEvent(valueEventListener);