如何在Firebase中创建自动递增的密钥?

问题描述 投票:6回答:1

我想知道我们是否可以像在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。

ios swift firebase firebase-realtime-database
1个回答
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属性,然后使用事务来更新它。

© www.soinside.com 2019 - 2024. All rights reserved.