Подтвердить что ты не робот

Как удалить несколько узлов в одном запросе в firebase?

У меня есть два узла от одного корня, и я хочу удалить данные из обоих из них в одном запросе. Оба подузла имеют одинаковый ключ. Я попробовал это:

Firebase firebaseRef = new Firebase(<root_path>);

Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put(<path_to_first_node>, key);
childUpdates.put(<path_to_second_node>, key);

listToRemoveRef.updateChildren(childUpdates, null);

Но он удалил данные только с первого узла

4b9b3361

Ответ 1

Похоже, вы используете функцию updateChildren неправильно. Что вы хотите сделать, это

Firebase firebaseRef = new Firebase(<root_path>);

Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("<path_to_first_node>" + key, null);
childUpdates.put("<path_to_second_node>" + key, null);

listToRemoveRef.updateChildren(childUpdates);

Второй параметр updateChildren не устанавливает значение в null это дополнительный слушатель завершения (, com.google.firebase.database.DatabaseReference.CompletionListener) rel="nofollow noreferrer">см. Документацию). Таким образом, вместо передачи null в последней строке, вы можете просто опустить его.

Ответ 2

Одним из способов может быть размещение вложений. Пожалуйста, смотрите код ниже:

fbDbRefRoot.child("Node1").removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {

                    fbDbRefRoot.child("Node2").removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {

                            Toast.makeText(v.getContext(), "Deleted", Toast.LENGTH_SHORT).show();

                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                            Toast.makeText(v.getContext(), "Not Deleted", Toast.LENGTH_SHORT).show();

                        }
                    });
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {

                    Toast.makeText(v.getContext(), "Not Deleted", Toast.LENGTH_SHORT).show();

                }
            });