enter image description here

Witam Programuję aplikację w Android Studio i używam funkcji Firebase do usuwania wszystkich danych użytkownika, gdy USER zostanie usunięty. Na zdjęciu, kiedy „asdf” z „UŻYTKOWNIKA” zostanie usunięty, identyfikator „asdf” powinien zostać usunięty wszędzie. Poniższy kod działa dobrze, ale tylko wtedy, gdy identyfikator nie znajduje się w katalogu o nieznanym identyfikatorze.

exports.deleteAdd1 = functions.database.ref('/USER/{userId}').onDelete((snap, context) => {

    const userId = context.params.userId;

    return admin.database().ref("/Add").child(userId).remove();
});

Naprawdę nie wiem, jak usunąć „asdf” pod „Dodaj” i inny identyfikator… jak na obrazku (identyfikator „5wIddHUoJy” jest nieznany) Proszę pomóż!

0
Marius 19 grudzień 2019, 02:20
Będziesz musiał albo 1) znać dokładną lokalizację do zaktualizowania, albo 2) wyszukiwać wszystkie te lokalizacje, powtarzać je i usuwać pojedynczo. Prawdopodobnie numer 2 będzie dla ciebie.
 – 
Doug Stevenson
19 grudzień 2019, 02:25

1 odpowiedź

dokumentacja Firebase stwierdza, że ​​dane są przechowywane w postaci drzewa JSON, oznacza to, że aby pobrać węzeł danych, musisz podać ścieżkę, pod którą się znajduje, i że operacja zwróci każdy węzeł podrzędny tego, o który prosisz.

Jak zauważył Doug, masz do dyspozycji kilka opcji:

  • Znasz wszystkie dokładne lokalizacje. Aby to osiągnąć, możesz albo przechowywać wszystkie lokalizacje związane z identyfikatorem w osobnym dokumencie, aby uzyskać rodzaj relacji 1-do-wielu, albo użyć pewnego rodzaju nazewnictwa semantycznego, jeśli ma to zastosowanie, aby od razu poznać lokalizacje.
  • Zapytaj, a następnie wykonaj iterację, a następnie usuń procedurę. Ten nie wymaga dodawania / zmiany struktury bazy danych, chociaż może być powolny, gdy żądane węzły zawierają mnóstwo danych.

Możesz również przyjrzeć się temu wątku, a zwłaszcza temu link o strategiach aktualizowania zdenormalizowanych danych.

0
Happy-Monad 27 grudzień 2019, 13:19