如果我将数据插入node/a/0firebase中.
结果将a是一个数组a[0].
同样的方法,如果我在node/a/1第一个数组中设置我的数据将变为null
"a" : [ null, {
"-J-22j_Mb59l0Ws0H9xc" : {
"name" : "chok wee ching"
}
} ]
Run Code Online (Sandbox Code Playgroud)
但是,如果 node/a/2
"a" : {
"2" : {
"-J-25xjEXUqcpsC-5LOE" : {
"name" : "chok wee ching"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的猜测,firebase自动将单个0和1视为一个数组.我怎么能阻止这个?
Firebase没有对阵列的本机支持.如果存储数组,它实际上存储为"对象",整数作为键名.
但是,为了帮助人们在Firebase中存储数组,当您调用.val()或使用REST API从Firebase读取数据时,如果数据看起来像数组,Firebase会将其呈现为数组.
特别是,如果所有键都是整数,并且对象中超过一半的键与对象中的最大键具有非空值,则Firebase会将其渲染为数组.这是您遇到的启发式的后半部分.您的第二个示例仅为2设置值,而不是0和1,因此不到一半的键具有值,因此Firebase将其呈现为对象.
你目前无法改变或阻止这种行为(虽然这是混乱的常见原因,所以我们将来可能会在这里进行一些调整).但是,一旦理解了行为,通常很容易处理.如果您需要进一步的帮助,也许您可以扩展您的问题,以解释您需要完成什么以及此行为如何阻止它.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |