使用 Angular2、angularfire2 和 Typescript 从 Firebase 对象中获取数据
Getting Data out of Firebase Object with Angular2, angularfire2 and Typescript
我目前正在使用 Angular 2 和 angularFire2 进行一个项目。
我的数据库在 Firebase 中看起来像这样:
基地:/数据
[{Name:test1},
{Name:test2},
{Name:test3}]
所有项目也有 Firebase 密钥。
现在我正在尝试使用来自 RX 的 Observabels 从 Firebase 中获取数据。
当我这样做时,我在控制台中得到了名称:
let items= af.database.list('/data').map(i=>{return i});
items.forEach(i=>i.forEach(e=>(console.log(e.name))));
输出:测试1、测试2、测试3。一切正常。
但是当我这样做时:
console.log(items.first());
我得到了一个 FirebaseListObservable。
我怎样才能只从 FirebaseListObservable 中获取第一个对象?
如何编辑列表中的项目?喜欢:
items[0].name=test3
以及如何从项目中获取 Firebase 密钥
如何从列表中的项目中获取 firebaseKey?
Observables
是一个异步数据结构,这意味着你实际上不知道数据什么时候可用,你必须订阅 Observable
并等待数据可用在 next
处理程序中可用。
items.first().subscribe(x => console.log(x.name));
此外,Observable
不是静态的,因此您不能对它进行索引。如果您只需要第一项,那么我建议您提取值并使用 flatMap
+ first
+ map
组合对其进行修改。
af.database.list('/data')
//Convert array into Observable and flatten it
.flatMap(list => list)
//Get only the first item in this list
.first()
//Transform the value
.map(({name, firebaseKey}) => ({name: "test3", firebaseKey}))
//Subscribe to the stream
.subscribe(x => console.log(x));
我目前正在使用 Angular 2 和 angularFire2 进行一个项目。 我的数据库在 Firebase 中看起来像这样: 基地:/数据
[{Name:test1},
{Name:test2},
{Name:test3}]
所有项目也有 Firebase 密钥。
现在我正在尝试使用来自 RX 的 Observabels 从 Firebase 中获取数据。 当我这样做时,我在控制台中得到了名称:
let items= af.database.list('/data').map(i=>{return i});
items.forEach(i=>i.forEach(e=>(console.log(e.name))));
输出:测试1、测试2、测试3。一切正常。
但是当我这样做时:
console.log(items.first());
我得到了一个 FirebaseListObservable。
我怎样才能只从 FirebaseListObservable 中获取第一个对象? 如何编辑列表中的项目?喜欢:
items[0].name=test3
以及如何从项目中获取 Firebase 密钥
如何从列表中的项目中获取 firebaseKey?
Observables
是一个异步数据结构,这意味着你实际上不知道数据什么时候可用,你必须订阅 Observable
并等待数据可用在 next
处理程序中可用。
items.first().subscribe(x => console.log(x.name));
此外,Observable
不是静态的,因此您不能对它进行索引。如果您只需要第一项,那么我建议您提取值并使用 flatMap
+ first
+ map
组合对其进行修改。
af.database.list('/data')
//Convert array into Observable and flatten it
.flatMap(list => list)
//Get only the first item in this list
.first()
//Transform the value
.map(({name, firebaseKey}) => ({name: "test3", firebaseKey}))
//Subscribe to the stream
.subscribe(x => console.log(x));