单个整数作为firebase中的键(Firebase数组行为)

vzh*_*hen 4 firebase

如果我将数据插入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视为一个数组.我怎么能阻止这个?

Mic*_*uer 8

Firebase没有对阵列的本机支持.如果存储数组,它实际上存储为"对象",整数作为键名.

但是,为了帮助人们在Firebase中存储数组,当您调用.val()或使用REST API从Firebase读取数据时,如果数据看起来像数组,Firebase会将其呈现为数组.

特别是,如果所有键都是整数,并且对象中超过一半的键与对象中的最大键具有非空值,则Firebase会将其渲染为数组.这是您遇到的启发式的后半部分.您的第二个示例仅为2设置值,而不是0和1,因此不到一半的键具有值,因此Firebase将其呈现为对象.

你目前无法改变或阻止这种行为(虽然这是混乱的常见原因,所以我们将来可能会在这里进行一些调整).但是,一旦理解了行为,通常很容易处理.如果您需要进一步的帮助,也许您可​​以扩展您的问题,以解释您需要完成什么以及此行为如何阻止它.

  • 我觉得应该有更多关于这个问题的文档.调试是一个非常令人困惑的问题. (6认同)