Firebase数据库在每个新节点的开头返回null

时间:2016-08-26 00:07:05

标签: javascript json firebase data-structures firebase-realtime-database

我在Firebase数据库中创建和显示单独的节点时遇到了一些困难。

以下是一个名为"Units"的子节点的镜头,因为它在Firebase控制台中查看,我希望在其中有单独的"Unit"个节点(1,2,3 ...)每个都有自己的属性。

enter image description here

我不知道我做错了什么,但是当数据返回时,每个新子节点的开头都有一个null,导致数据在视图中迭代时显示不正确。

以下是数据返回时浏览器中console.log的快照:

enter image description here

正如您所看到的,在实际数据之前,每个新嵌套节点的顶部都有一个null。我想也许这与没有任何值的(1,2,3)节点有关,但是如果我给它们值,我就不能再在每个单元内嵌套数据了。

我对Firebase相对较新,所以请原谅我,如果我犯了一些基本错误。提前谢谢!

1 个答案:

答案 0 :(得分:4)

使用数字属性名称时,Firebase会查看您是否尝试存储数组。 legacy documentation on firebase.com对此有这样的说法:

  

使用val()或REST api读取数据时,如果数据看起来像数组,则服务器会将其呈现为数组。特别是,如果所有键都是整数,并且对象中超过一半的键与对象中的最大键具有非空值,则将其视为数组。

由于您的数据符合这些条件,因此Firebase会将其作为数组返回。由于数组是从0开始的,因此它会添加缺少的第0个元素。

为防止这种情况,您可以选择以下几种方法:

  • 请勿使用数字键,但请使用Firebase push()生成密钥

  • 请勿使用数字键,在数字前加上常量字符串:Unit1Unit2

  • 从0开始计算(AndréKool的好建议)

好的,这些是我能想到的唯一选择。