我想知道我们是否可以像在SQL中一样在Firebase中创建自动增量ID(密钥)!
我想要创建一个像这样的结构
rules:
Line1:
1: Smith
2: Alex
3: Hello
Line2:
1: Brown
2: Michael
所以,如果我想添加" Erik"它应该像第1行一样
Line1:
1: Smith
2: Alex
3: Hello
4: Erik
有可能有这样的结构吗?
我知道我们有
推()
和
childByAutoId()
但这不适合我的问题。我正在使用Swift iOS。
答案 0 :(得分:7)
此类顺序密钥固有地限制了多用户分布式系统的可扩展性,该系统还需要处理缺少连接的问题。这就是Firebase不支持它们的原因之一。
相反,Firebase有自己的密钥类型,称为推送ID 。就像你正在寻找的序列一样,它们单调增加,并且它们也保证是独一无二的。但最大的区别在于推送ID与大多数SQL数据库的序列号不同,可以在客户端确定。
有关Firebase中数组(与序列类似)的详细信息,请参阅此博文:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html。
有关Firebase推送ID的详细信息,请参阅此博文:https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html
如果您仍然决定必须使用顺序ID,请在此处查看Kato的实现:http://jsfiddle.net/katowulf/5ESSp/。其核心是在数据库中保留counter
属性,其中包含当前最高序列号,然后使用事务来更新该属性。