如何通过 REST API 读取 Firebase 有序数据?

Posted

技术标签:

【中文标题】如何通过 REST API 读取 Firebase 有序数据?【英文标题】:How can I read Firebase ordered data via the REST API? 【发布时间】:2013-11-22 16:51:07 【问题描述】:

我通过push() 按时间顺序写入我的数据,但我需要通过 REST API 读取它,它将数据作为 obj 而不是数组返回。这是个问题,因为 JS 不支持有序字典。

解决这个问题的最佳方法是什么?

【问题讨论】:

【参考方案1】:

当您使用 push() 1 2 时,Firebase 不会存储数组。相反,它会创建一个唯一的、基于时间的 id,并使用该 ID 将值存储在一个对象中。它们看起来像这样:

选择这种方法有很多原因,以及为什么在实时数据存储中使用数组是个坏主意1

一个好处是所有现代浏览器在每种情况下都正确排序对象,除了 chrome 123 的高度争议的数字排序。

鉴于这些事实,以及 Firebase 的推送 id 是按字典顺序排序的字符串这一事实,REST API 将按照它们被推送的相同顺序返回记录,并且正如它们出现在 Forge 中一样,快速 curl 测试将确认。

唯一可能遇到麻烦的地方是使用数字 ID,这自然会在 Chrome 中引起一些混乱。当然,通过在每个 id 上加上“0”或字符串前缀来强制 Chrome 也按字典顺序对它们进行排序,很容易解决这些问题1

var a = "foo":"bar", "03": "3", "02":"2", "01":"1";
for(var i in a)  print(i) ;

produces following output as expected:
foo
3
2
1

【讨论】:

以上是关于如何通过 REST API 读取 Firebase 有序数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 HTTP REST API 访问我的 Firebase 数据库?

Firebase Rest Api 从我的模型类中读取数据返回 null [重复]

Firebase 数据库 Rest Api:如何使用未知节点订购

使用邮件和密码通过 REST API [Firebase] 进行身份验证

通过 REST API 创建 Firebase 控制台动态链接

如何在 Firebase 读取 API 中调用 yield