使用 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));