2016-09-15 52 views
3

我想知道是否可以像我們在SQL中一樣在Firebase中創建自動增量ID(Keys)!如何在Firebase中創建自動增加的鍵?

我想創建這樣

rules: 
    Line1: 
    1: Smith 
    2: Alex 
    3: Hello 
    Line2: 
    1: Brown 
    2: Michael 

的結構因此,可以說,如果我要「埃裏克」添加到第1行應該做這樣的

Line1: 
    1: Smith 
    2: Alex 
    3: Hello 
    4: Erik 

是否有可能像那樣的結構?

我知道我們有

推()

childByAutoId()

但是這並不適合我的問題。我正在使用Swift iOS。

回答

5

這樣的順序密鑰固有地限制了多用戶分佈式系統的可擴展性,這也需要處理缺乏連接性。這是Firebase不支持它們的原因之一。

取而代之的是Firebase擁有自己的密鑰類型,名爲推送ID爲。就像你要找的序列一樣,它們單調增加,而且它們也保證是唯一的。但最大的區別在於推送ID與大多數SQL數據庫的序列號不同,可以由客戶端確定。

有關陣列(其類似於序列)在火力地堡的更多信息,請參閱本博客文章:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

有關火力地堡的推動ID的更多信息,請參見這篇博客文章:https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

如果您還決定,你必須使用順序ID,看看加藤的實施,在這裏:http://jsfiddle.net/katowulf/5ESSp/。其核心是保持數據庫中counter屬性具有當前最高序列號,然後使用事務來更新該屬性。

+0

謝謝你的答案,所以我基本上可以用「推()」創建,而不是這種有序的數字「1:名稱2:名稱」,將這樣的工作「‘pushid1’:名稱‘pushid2’:名稱'? –

+0

如果您想要在Firebase中按時間順序排列的孩子集合,那麼使用推送確實很常見。 –

相關問題