Редактировать -
Эй! Поскольку вы хотите выполнить итерацию для каждого дочернего элемента, я настоятельно рекомендую вам изменить структуру базы данных.
- Измените имя таблицы «Время встречи1» / «Встреча1» на «1001» (значение Bookingid). Вы можете создать поле с именем title и сохранить «Время встречи1».
- Затем сделайте таблицу «1001» прямым потомком для встреч. Вы также можете добавить название магазина в виде поля внутри таблицы «1001».
- Использовать уникальный идентификатор в качестве идентификатора магазина и сохранять его во встречах вместо названия магазина.
- Сохранить копию назначений внутри магазина.
Для лучшего понимания посмотрите изображения, которые я приложил.
Таблица назначений , Таблица магазинов , Таблица пользователей .
После того, как вы структурируете свою базу данных, операции станут простыми.
-
Так как вы знаете идентификатор бронирования, используйте приведенный ниже код для получения таблицы 1001 (или любого идентификатора бронирования) из таблицы встреч.
Получите ShopId и customerID, хранящиеся в таблице 1001.
Перейти к таблице «Магазин» и использовать только что полученный идентификатор магазина и удалить из его таблицы встреч 1001.
Аналогично, перейти к таблице «Пользователи» и использовать только что полученный пользовательский идентификатор и внутренние встречи удалите 1001.
bookingid = "1001" ;
//set reference to 1001 inside appointments table
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Appointment").child(bookingid);
//fetch shopid and customerid
String shopid = databaseReference.child("shopid").getValue();
String customerid = databaseReference.child("customerid").getValue();
//Once you have shopid and customerid, delete 1001 in appointments
databaseReference.removeValue();
//Remove tables inside Shop and Users
databaseReference = FirebaseDatabase.getInstance().getReference().child("Shop").child(shopid).child("Appointment").child(bookingid);
databaseReference..removeValue();
databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(customerid).child("Appointment").child(bookingid).removeValue();
databaseReference..removeValue();
Старый ответ -
Если вы знаете фактический путь, используйте
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("pathToAppointment");
if(databaseReference.child("bookingid").getValue() == "1001"){
databaseReference.removeValue();
}
. То же самое можно сделать с обеими таблицами встреч. Просто укажите правильный путь для databaseReference.
Если вы не знаете путь или хотите перебрать все встречи, чтобы получить ту, которая имеет идентификатор бронирования 1001, тогда реализация немного отличается. И в этом случае я также рекомендую вам структурировать базу данных для большей эффективности. Оставьте комментарий, если хотите, чтобы это было так.