我按时间顺序通过push()
编写我的数据,但我需要通过REST API读取它,它将数据作为obj而不是数组返回。这是一个问题,因为JS不支持有序词典。
最好的方法是什么?
答案 0 :(得分:1)
使用push() 1 2 时,Firebase不会存储数组。相反,它会创建一个唯一的,基于时间的ID,并使用该ID将值存储在对象中。他们看起来像这样:
为什么选择这种方法有很多原因,以及为什么在实时数据存储 1 中使用数组是个坏主意。
一个优点是所有现代浏览器都能在每种情况下正确排序对象,不包括对chrome 1 2 3 的高度争议的数字排序。
鉴于这些事实,以及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