【问题标题】:Convert firebase json to typescript array将firebase json转换为打字稿数组
【发布时间】:2018-04-26 14:25:35
【问题描述】:

我可以很容易地让数据在我的 HTML 中工作,但是当我必须将其转换为可视化目的时,这很困难。

我将数据作为 FirebaseListObservable 获取。在我的例子中,每个 List 中有 3 个值类型,但只有其中一个必须是数组的一部分。如何将 FirebaseListObservable 转换为 typescript 中的数组?

转换的原因是在我的应用程序中使用图表。

Typescript 获取数据:

this.measure= this.db.list('/Users/'+this.username+'/Measure');
enter code here

chartjs 的打字稿

this.data = [12, 24, 91, 23] 

数据必须是来自 firebase 的数据

【问题讨论】:

  • 用一些代码发帖会增加得到回答的机会。
  • @Hareesh - 我已经更新了。感谢提及。

标签: arrays json typescript firebase ionic-framework


【解决方案1】:

FirebaseListObservable 是一个可观察的。这意味着当您订阅时,您将获得列表本身(=您想要的数组)。

this.measure: FirebaseListObservable<Measure[]> = this.db.list('/Users/'+this.username+'/Measure');
this.measure
    .map(measurement => measurement.numbers) // this extracts only numbers field so we have basically array of arrays
    .map(numbersArrays => numbersArrays.reduce((curr, prev) => curr.concat(prev))) // so lets concat all those arrays into a single one
    .subscribe(numbersArray: number[] => {
        console.log(numbersArray);
    });

interface Measure {
    data: Date;
    geolocation: string;
    numbers: number[];
}

【讨论】:

  • 我会试试的,谢谢。 Measure 包含数字、日期和地理位置。
  • 我为Measure添加了接口
  • 好的,我现在知道了:this.db.list('/Users/'+this.username+'/Measure').subscribe(items => { console.log(items); } );我可以在控制台中看到数据。如何将数字保存在数组中?
  • 那么您现在想用这些测量值做什么?该列表的每个项目都有数字。你想把他们加在一起吗?
  • 是的,这正是我想要的。像这样 [30,40,20,10,30]
【解决方案2】:

声明一个空数组data=[];

然后用.subscribe()获取数据

this.db.list('/Users/'+this.username+'/Measure').subscribe(measures => {
    measures.forEach(measure => {
      this.data.push(measure.number);//.number should be your field in firebase
    })
  })

这将获取所有列表并搜索所有项目并将所需的值推送到数组。

【讨论】:

  • 这正是我所需要的!
猜你喜欢
  • 2020-12-27
  • 2018-06-14
  • 2021-12-19
  • 2016-09-10
  • 2018-09-18
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多