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

如何通过REST API读取Firebase有序数据?,firebase,Firebase,我通过push()按时间顺序写入数据,但我需要通过RESTAPI读取数据,RESTAPI将数据作为obj而不是数组返回。这是一个问题,因为JS不支持有序字典 解决这个问题的最佳方法是什么?使用push()时,Firebase不存储阵列。相反,它会创建一个唯一的、基于时间的id,并使用该id将值存储在对象中。它们看起来如下所示: 选择这种方法有很多原因,以及为什么在实时数据存储中使用阵列是个坏主意 一个优点是,所有现代浏览器在任何情况下都能正确地排序对象,但chrome中备受争议的数字排序除外

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


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

使用push()时,Firebase不存储阵列。相反,它会创建一个唯一的、基于时间的id,并使用该id将值存储在对象中。它们看起来如下所示:

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

一个优点是,所有现代浏览器在任何情况下都能正确地排序对象,但chrome中备受争议的数字排序除外

考虑到这些事实,以及Firebase的推送ID是按字典顺序排序的字符串的事实,REST API将以推送的相同顺序返回记录,正如它们出现在Forge中一样,这将通过快速
curl
测试来确认

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

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