android studio - Как я могу удалить дочерний элемент целиком, используя его дочернее значение в firebase? - PullRequest
0 голосов
/ 09 июля 2020

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

Я хочу удалить 2 дочерних элемента (например, «Встреча1 18:00» и «Встреча1»), как показано на изображении, с использованием общего дочернего значения "bookingid: 1001".

1 Ответ

0 голосов
/ 09 июля 2020

Редактировать -

Эй! Поскольку вы хотите выполнить итерацию для каждого дочернего элемента, я настоятельно рекомендую вам изменить структуру базы данных.

  1. Измените имя таблицы «Время встречи1» / «Встреча1» на «1001» (значение Bookingid). Вы можете создать поле с именем title и сохранить «Время встречи1».
  2. Затем сделайте таблицу «1001» прямым потомком для встреч. Вы также можете добавить название магазина в виде поля внутри таблицы «1001».
  3. Использовать уникальный идентификатор в качестве идентификатора магазина и сохранять его во встречах вместо названия магазина.
  4. Сохранить копию назначений внутри магазина.

Для лучшего понимания посмотрите изображения, которые я приложил.

Таблица назначений , Таблица магазинов , Таблица пользователей .

После того, как вы структурируете свою базу данных, операции станут простыми.

  • Так как вы знаете идентификатор бронирования, используйте приведенный ниже код для получения таблицы 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, тогда реализация немного отличается. И в этом случае я также рекомендую вам структурировать базу данных для большей эффективности. Оставьте комментарий, если хотите, чтобы это было так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...