2013-03-20 24 views
12

firebase example database爲什麼Firebase集合似乎以空行開始?

我創建了一個簡單的firebase數據集來測試一些REST調用(見下圖)。我想知道爲什麼,當我查詢數據庫中的集合時,firebase總是首先返回一個空行,然後返回實際的行。這是我導出數據時得到的結果。注意下的系統和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 
    } ] 
} 

回答

18

火力地堡自動檢測。由於'系統'和'system_types'的子元素爲1,2和3,因此Firebase會在輸出時自動將它們轉換爲數組。但是,由於您沒有爲索引0指定值,Firebase只是插入一個空元素。

我建議要麼使用基於零的ID,要麼可能用非數字的東西開始你的ID,所以我們知道它不是一個數組(即:item1,item2,item3)。

你也可以忽略null元素 - 在Firebase中null和不存在是相同的東西。

+0

Thanks!剛剛通過導出json,刪除空值並再次導入,我自己發現了這一點。有點奇怪開始ID爲0,但我想這是有道理的,如果你想靈活的各種不同的架構類型。 – cayblood 2013-03-20 23:09:03

+0

浪費了我的3個小時。謝謝!!!! – madhairsilence 2016-12-05 18:53:03

0

我發現了上述問題的黑客攻擊。只需使用具有所有數字鍵的非數字(虛擬)鍵,並且在導出時,Firebase不會將數字鍵轉換爲空。請查看屏幕截圖以獲得更好的理解。我已經用其他數字鍵'd',即使我沒有使用'd'鍵。

enter image description here