2016-07-29 14 views
14

tylko do odczytu & trybie non-realtime aktywowany w celu zwiększenia wydajności przeglądarkiFirebase: tylko do odczytu i trybie non-realtime aktywowane w celu poprawy wydajności przeglądarce

Komunikat pojawia się w moim projekcie i jestem w stanie usunąć węzły, jak również

również czytałem ten https://groups.google.com/forum/#!topic/firebase-talk/qLxZCI8i47s

który stanowi:

Jeśli masz dużo węzłów w swojej Firebase (powiedzmy tysiące), musimy utworzyć nowy element dla każdego węzła i nowoczesnych przeglądarek po prostu mieć ograniczenia ile DOM elementy można dodać do strony

mówi:

Aby rozwiązać ten problem, nie należy załadować Firebase Dashboard u podstaw swojej Firebase, ale zamiast ładować go niżej w hierarchii

nie rozumiem, co to oznacza

Jak wrócić do mojego pulpitu nawigacyjnego w czasie rzeczywistym?

Odpowiedz

15

Po wykryciu, że pobiera zbyt wiele węzłów z bazy danych, konsola Firebase przestaje korzystać z trybu czasu rzeczywistego i przełącza się w tryb tylko do odczytu. W tym trybie wymaga mniej pracy z przeglądarki, więc jest bardziej prawdopodobne, że przeglądarka pozostanie wydajna.

Aby powrócić do trybu czasu rzeczywistego, należy przejść do lokalizacji, która ma mniej węzłów. Więc powiedzieć, że zaczniesz ładuje bazę u nasady, co oznacza, że ​​„pasek adresu pseudo” na szczycie drzewa danych powie:

https://<your-project>.firebaseio.com/ 

A potem pokaże listę elementów. Teraz kliknij na adres URL w pasku adresu tej pseudo i zmień ją na:

https://<your-project>.firebaseio.com/<one-of-your-keys> 

i uderzył wprowadzić. Drzewo danych przeładuje się tylko z węzłem z one-of-your-keys i nie działa i prawdopodobnie ponownie przejdzie w tryb czasu rzeczywistego.

+6

Ale jak mogę usunąć węzeł wysokiego szczebla, która ma dużą liczbę dzieci, z przeglądarki? Z jakiegoś powodu nawet robienie programowego usuwania węzła wysokiego poziomu za pomocą wywołania mutableData.setValue (null) w ramach transakcji zatrzymało usunięcie tego węzła dla mnie ... ta metoda działała wcześniej –

+4

OK przepraszam, wygląda na to, że programuje delete działał dla mnie, zajęło mi tylko kilka sekund, aby znaleźć odzwierciedlenie w przeglądarce .... więc wniosek: dla węzłów o dużym numerze. dzieci mogę usunąć programowo, nie z przeglądarki –

+2

@dangling_refrenz Nieco późno, ale w rzeczywistości można usunąć węzły wysokiego poziomu w przeglądarce. Możesz sprawdzić moją odpowiedź poniżej, aby to zrobić. – Dallas

1

Mam ten sam problem ... Jestem nieco zaskoczony, ponieważ chociaż Firebase może łatwo skalować w celu obsługi ogromnej ilości danych (przykład milionów użytkowników itp.).

Mam węzeł z 80000 pod-węzłami (każdy obiekt ma swój własny identyfikator) i nie mogę go usunąć ani wykonać żadnej akcji, ponieważ w czasie rzeczywistym nie działa w konsoli Firebase.

myślę, że jedynym sposobem na udate lub usunąć dane, to jest to zrobić za pośrednictwem kodu Java :(

+1

Nie ma to nic wspólnego ze skalowalnością Firebase, ograniczają one tylko edycję przeglądarki dla dużej liczby węzłów. – interrupt

0

Wiele razy próbuje załadować konkretnych klawiszy może być męczące. Jest to biblioteka Pythona, który mógłby to zrobić dla łatwo.

http://ozgur.github.io/python-firebase/

musiałem usunąć wiele kluczy i to pomogło mi to zrobić za jednym zamachem.

+0

Linki do potencjalnych rozwiązań są zawsze mile widziane, ale proszę dodać kilka szczegółów dla przyszłych użytkowników w przypadku, gdy link nie będzie już dostępny. –

2

Każdy klucz węzła w bazie ogniowej jest łączem, można otworzyć pod-węzeł w nowej karcie, a następnie edytować ten pod-węzeł i jego podrzędne.

  1. prawym przyciskiem myszy na sub-węzeł, który chcesz edytować lub usunąć

  2. wybierz Otwórz odnośnik w nowej karcie

  3. Edit sub-węzeł w nowej karcie

28

Jeśli chcesz usunąć węzeł wysokiego poziomu, gdy jest on włączony, zalecam wykonanie tego.

Otwórz edytor tekstu i wpisz { }. Zapisz ten plik jako "blankJSON.json".

Przejdź do węzła wysokiego poziomu, który chcesz usunąć i wybierz go, gdy otworzy się i pokaże wszystkie węzły, które należy usunąć, wybierz trzy paski w prawym górnym rogu i wybierz "Importuj JSON", (to by bądź bezpieczny, aby najpierw "eksportować JSON" Jeśli nie masz kopii zapasowych, na wypadek gdybyś popełnił błąd tutaj). Zaimportuj utworzony wcześniej plik JSON o nazwie "blankJSON".

Spowoduje to usunięcie wszystkich danych w środku.

Jeszcze raz proponuję wykonać kopię zapasową przed zrobieniem tego. Tworzenie kopii zapasowej jest niezwykle proste, a także znacznie łatwiejsze niż myślisz, aby przesłać puste JSON do niewłaściwego węzła, a następnie usunąć kilka ważnych dane.

+2

Inteligentne rozwiązanie, dzięki – Kalpesh

+1

Ty dobry :) dzięki – yarin

+1

Inteligentne i łatwe rozwiązanie! – Himanshu

0

Co można zrobić, to mieć onclicklistener i wywołać metodę cena Usuń do DatabaseReference, tak:

mCart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mDatabaseReference.removeValue(); 
     } 
    });