Angular 5,订阅firebase,第一个元素是undefined

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular 5,订阅firebase,第一个元素是undefined相关的知识,希望对你有一定的参考价值。

这是我的firebase实时数据库:enter image description here

这是我的打字稿代码,它订阅了数据库服务:

this.afDb.list('/images/').valueChanges().subscribe(items => {
  console.log(items);
});

但每个数组的第一项是空的,null,未定义。我哪个部分出了问题以及如何预防呢?

enter image description here

答案

看一下images / q13下的数据。钥匙都是数字。这意味着Firebase SDK会将其解释为数组。您的日志输出确认了这一点 - 注意数组成员周围的方括号。

要记住的一件事是javascript数组从0开始。这意味着,当Firebase将您的数据库内容转换为数组时,它将跳过0,因为您在该索引处没有数据。你看到的数字总是他们正确的数组索引。它并不是简单地压缩整个事物。

因此,如果您想在数组中使用元素0,请将数据库键设置为0.否则,在客户端代码中,跳过第一个元素,期望不存在0元素。

以上是关于Angular 5,订阅firebase,第一个元素是undefined的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Observable、Firebase (Angular 6) 为 var 赋值

离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)

利用浏览器缓存 - Firebase/Angular 5

Angular / RxJs对一个observable的多个订阅

使用 Angular 5 firebase 创建具有电子邮件和密码的用户

使用 AngularFire2 (Angular2 rc.5) 访问 firebase.storage()