【问题标题】:Error at Converting A Firebase Database Snapshot To An Array In TypeScript在 TypeScript 中将 Firebase 数据库快照转换为数组时出错
【发布时间】:2018-04-02 14:34:52
【问题描述】:

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

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

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

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

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

有人知道发生了什么吗?

【问题讨论】:

  • 您的数据库中有多个boolean 属性,例如boolLogindisponible。因此,当您使用 foreach 迭代值并向它们添加键时,您会收到此错误,因为它试图将键添加到 item,即使它在此行中有布尔值 item.key=childSnapshot.key;
  • 对于布尔字段,您必须以不同的方式处理它。
  • 但即使我删除布尔字段并只留下字符串字段,它也会给我同样的问题。我将使用没有布尔字段的输出来更新问题
  • 请检查我的答案是否适合您。

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


【解决方案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);      
            })

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多