由于某些不可预测的行为,我在深度优先搜索存储在Firebase中的某些数据时遇到了一些麻烦。
我有以下数据结构:
"someData":
|_______>"01": (take note this is a key:value, not intended to be array index)
| |_______"child1"
| |_______"child2"
|_______>"02":
|_______"child3"
|_______"child4"
使用:
var ref = new Firebase("https://myURL.firebaseio.com/someData");
var sync = $firebase(ref);
var someData = sync.$asObject();
人们期望someData
成为:
"someData" [with its children stored as OBJECT]:
|_______>"01" [with its children stored as OBJECT]:
| |_______"child1"
| |_______"child2"
|_______>"02" [with its children stored as OBJECT]
|_______"child3"
|_______"child4"
但是,someData
变为:
"someData" [with its children stored as ARRAY]:
|_______>"01" [with its children stored as OBJECT]:
| |_______"child1"
| |_______"child2"
|_______>"02" [with its children stored as ARRAY]
|_______"child3"
|_______"child4"
除了更改我的命名惯例外,有没有办法可以强制someData
采用我想要的形式?
如果我有一个名为'01'
的密钥,则数据将被解释为数组,尽管sync.$asObject()
。
当数据被解释为OBJECT或ARRAY时,如果它具有“数字”(作为字符串)作为KEY
从this is taken from Firebase blog开始:在读取位置时,如果所有对象的键看起来都像数字,则假定它是一个有序数组,可能是稀疏的,并将其作为数组返回。
因此,键看起来不像索引是很重要的。我已将我的密钥名称从“01”更改为“m01”,并且一起避免了不一致的问题。
答案 0 :(得分:2)
从this is taken from Firebase blog开始:在读取位置时,如果所有对象的键看起来都像数字,则假定它是一个有序数组,可能是稀疏的,并将其作为数组返回。
因此,键看起来不像索引是很重要的。我已将我的密钥更改为" m01"来自" 01",并且一起避免了不一致的问题。