将firebase json转换为打字稿数组

Posted

技术标签:

【中文标题】将firebase json转换为打字稿数组【英文标题】:Convert firebase json to typescript array 【发布时间】: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 - 我已经更新了。感谢提及。 【参考方案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
    )
  )

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

【讨论】:

这正是我所需要的!

以上是关于将firebase json转换为打字稿数组的主要内容,如果未能解决你的问题,请参考以下文章

打字稿将数组转换为 JSON

将 JSON 转换为数组打字稿

在打字稿中将 JSON 转换为字符串数组

打字稿->从Json.net转换字典的内容

打字稿:将 JSON 对象转换为类/接口对象

将首先转换为 Observable 的 json 文件转换为打字稿中的地图,角度