我在创建和显示来 self 的 Firebase 数据库的单独节点时遇到了一些困难。
这是一个名为 "Units"
的子节点的截图,它在 Firebase 控制台中显示,我希望在其下有单独的单个 "Unit"
节点(1,2,3...) 每个都有自己的属性。
我不知道我做错了什么,但是当数据返回时,每个新子节点的开头都有一个 null
,这会导致在 View 中迭代时数据显示不正确.
这是数据返回时浏览器中 console.log
的快照:
如您所见,每个新嵌套节点的顶部在实际数据之前都有一个 null
。我在想这可能与没有任何值的 (1,2,3) 节点有关,但如果我给它们赋值,我就无法再在每个单元内嵌套数据。
我是 Firebase 的新手,所以如果我犯了一些基本错误,请原谅我。提前致谢!
最佳答案
当您使用数字属性名称时,Firebase 会查看您是否在尝试存储数组。 legacy documentation on firebase.com对此有话要说:
when data is read using
val()
or via the REST api, if the data looks like an array, the server will render it as an array. In particular, if all of the keys are integers, and more than half of the keys between 0 and the maximum key in the object have non-empty values, then it is treated as an array.
由于您的数据满足这些条件,Firebase 会将其作为数组返回。由于数组是从 0 开始的,因此它添加了缺失的第 0 个元素。
为防止这种情况,您有几种选择:
不要使用数字键,而是使用 Firebase
push()
生成您的键不要使用数字键,在数字前加上常量字符串:
Unit1
、Unit2
等从 0 开始计数(André Kool 的好建议)
好的,这些真的是我能想到的唯一选择。
关于javascript - Firebase 数据库在每个新节点的开头返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156533/