我在Firebase数据库中创建和显示单独的节点时遇到了一些困难。
以下是一个名为"Units"
的子节点的镜头,因为它在Firebase控制台中查看,我希望在其中有单独的"Unit"
个节点(1,2,3 ...)每个都有自己的属性。
我不知道我做错了什么,但是当数据返回时,每个新子节点的开头都有一个null
,导致数据在视图中迭代时显示不正确。
以下是数据返回时浏览器中console.log
的快照:
正如您所看到的,在实际数据之前,每个新嵌套节点的顶部都有一个null
。我想也许这与没有任何值的(1,2,3)节点有关,但是如果我给它们值,我就不能再在每个单元内嵌套数据了。
我对Firebase相对较新,所以请原谅我,如果我犯了一些基本错误。提前谢谢!
答案 0 :(得分:4)
使用数字属性名称时,Firebase会查看您是否尝试存储数组。 legacy documentation on firebase.com对此有这样的说法:
使用
val()
或REST api读取数据时,如果数据看起来像数组,则服务器会将其呈现为数组。特别是,如果所有键都是整数,并且对象中超过一半的键与对象中的最大键具有非空值,则将其视为数组。
由于您的数据符合这些条件,因此Firebase会将其作为数组返回。由于数组是从0开始的,因此它会添加缺少的第0个元素。
为防止这种情况,您可以选择以下几种方法:
请勿使用数字键,但请使用Firebase push()
生成密钥
请勿使用数字键,在数字前加上常量字符串:Unit1
,Unit2
等
从0开始计算(AndréKool的好建议)
好的,这些是我能想到的唯一选择。