将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转换为打字稿数组的主要内容,如果未能解决你的问题,请参考以下文章