在FireScript中将Firebase数据库快照转换为数组时出错

时间:2017-10-21 16:59:32

标签: typescript firebase ionic-framework firebase-realtime-database angularfire

我一直在关注本教程https://ilikekillnerds.com/2017/05/convert-firebase-database-snapshotcollection-array-javascript/,以便将firebase快照转换为我的离子应用程序中的数组。这是我的代码:

https://github.com/dladinot/AplicativoTutoriasMoviles/blob/master/src/pages/buscar-tutor/buscar-tutor.ts

这是我在firebase中的数据结构:

enter image description here

当我使用我的代码时,这是它给我的错误:

enter image description here

当我认为错误似乎是那行代码时,我可以看到快照中的第一项存储在数组中,然后下一个值是未定义的。虽然如果我只是打印键,它打印就好了:

enter image description here

任何人都知道发生了什么?

1 个答案:

答案 0 :(得分:1)

您的数据库中有多个boolean属性,例如boolLogindisponible.,因此当您使用foreach迭代值并为其添加密钥时,您会收到此错误,因为它是尝试为该项添加密钥,即使该项中的值为boolean

item.key=childSnapshot.key;

尝试使用以下代码

将快照添加到数组中
this.consultaTutor=this.afDatabase.object(`profile/SlHGkc3ZK0hHxH2s1sowpgGuJfA3`, {preserveSnapshot: true})
          this.consultaTutor.subscribe(info=>{
            info.forEach(childSnapshot=>{  
              var value = childSnapshot.val();
              var key = childSnapshot.key;
              console.log(childSnapshot.key);
              var item = { "key" : key, "value" : value};
              this.listaTutores.push(item);      
            })