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

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

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

这是一个名为 "Units" 的子节点的截图,它在 Firebase 控制台中显示,我希望在其下有单独的单个 "Unit" 节点(1,2,3...) 每个都有自己的属性。

enter image description here

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

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

enter image description here

如您所见,每个新嵌套节点的顶部在实际数据之前都有一个 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() 生成您的键

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

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

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

关于javascript - Firebase 数据库在每个新节点的开头返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156533/

相关文章:

c# - 访问名称中带点的属性

ios - 如何知道我上传到 firebase 的文件是否已完成上传?

javascript - 将 Angular 2 中另一个组件的模板引用变量作为目标

javascript - 我正在尝试旋转包含嵌套 div 的 div,而 div 是垂直反射的吗?

javascript - Angularjs ui-gmap-window 对象数据不呈现

json - node.js 模块以可配置的方式比较 json

年间隔的 Javascript 下拉菜单

java - JSON问题: can't get data required,故障一直发生

angular - Firestore 上不区分大小写的查询

java - Android Firebase 字典键更改大小写