将Firebase数据库快照转换为TypeScript中的数组时出错

问题描述:

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

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

这是火力点我的数据结构:

enter image description here

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

enter image description here

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

enter image description here

任何人有任何想法,这是怎么回事?

+0

快照添加到阵列你的数据库中有几个'boolean'属性,比如'boolLogin'和'disponible'。因此,当你使用foreach迭代值并向它们添加一个键时,你会得到这个错误,因为它试图向'item'添加键,即使它在这一行中具有布尔值'item.key = childSnapshot.key; ' – Niladri

+0

对于布尔字段,你必须以不同的方式处理它。 – Niladri

+0

但即使我删除布尔字段并只留下字符串字段,它也会给我带来同样的问题。我会更新问题与输出在没有布尔字段 –

你在你的数据库像boolLogindisponible.因此,当您使用foreach来的值,并添加一键他们,因为它试图添加关键项,即使它有您收到此错误信息的几个boolean性质在这条线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);  
      }) 
+0

感谢它完美的作品。 –