2013-03-20 6 views
12

firebase example databaseDlaczego kolekcje Firebase zaczynają się od pustego wiersza?

Stworzyłem prosty zestaw danych z bazy danych, aby przetestować niektóre wywołania REST (patrz obrazek poniżej). Zastanawiam się, dlaczego, gdy zapytanie o kolekcje w bazie danych, firebase zawsze zwraca najpierw wiersz zerowy, a następnie rzeczywiste wiersze. Oto, co otrzymuję, gdy eksportuję dane. Zauważ zerowej wierszy pod systemami i system_types:

{ 
    "systems" : [ null, { 
    "system_type_id" : 2, 
    "name" : "Commodore 128", 
    "id" : 1 
    }, { 
    "system_type_id" : 1, 
    "name" : "Difference Engine", 
    "id" : 2 
    }, { 
    "system_type_id" : 2, 
    "name" : "Osborne", 
    "id" : 3 
    } ], 
    "system_types" : [ null, { 
    "name" : "Babbage", 
    "id" : 1 
    }, { 
    "name" : "Von Neumann", 
    "id" : 2 
    } ] 
} 

Odpowiedz

18

Firebase automatycznie wykrywa, gdy obiekt „wygląda” tablicy, i konwertuje go odpowiednio. Ponieważ "systems" i "system_types" mają dzieci w liczbie 1, 2 i 3, Firebase automatycznie konwertuje je na tablice w czasie wyjściowym. Ponieważ jednak nie określono wartości dla indeksu 0, Firebase wstawia właśnie pusty element.

Proponuję użycie identyfikatorów opartych na zerach, a może uruchomienie twojego identyfikatora za pomocą czegoś nieliczbowego, więc wiemy, że nie jest to tablica (np. Element1, element2, element3).

Można również po prostu zignorować element zerowy - w Firebase wartość null i nieistniejąca to to samo.

+0

Dzięki! Sam to wymyśliłem, eksportując json, usuwając wartości zerowe i importując ponownie. Trochę dziwne, że zaczynają identyfikatory na 0, ale myślę, że ma to sens, jeśli próbujesz być elastycznym na różne typy schematów. – cayblood

+0

WASTED MY 3 HRS. Dzięki!!!! – madhairsilence

0

Znalazłem włamywacz do powyższego problemu. Po prostu użyj klawisza nieliczbowego (dummy) ze wszystkimi klawiszami numerycznymi, a firebase nie przekonwertuje klucza numerycznego na wartość null podczas eksportowania. Sprawdź zrzut ekranu, aby uzyskać lepsze zrozumienie. Użyłem "d" z innymi klawiszami numerycznymi, mimo że nie używam klawisza "d".

enter image description here

Powiązane problemy