如何获取Firebase实时数据库中添加的最后一项?

时间:2019-03-31 20:47:03

标签: angular typescript firebase firebase-realtime-database angularfire2

我正在使用Firebase的实时数据库来实时更新图表内的值。但是我不知道如何只检索添加到数据库中的最后一个值。

我在https://github.com/angular/angularfire2/issues/1773处找到了一些解释,但没有使它起作用

到目前为止,我设法做到的是:

this.items = db.list('/items').valueChanges()
this.items.forEach(item => {
  this.data = item;
  this.add(this.data[this.data.length-1])
  console.log(this.data)
})

add(point: any) {
   this.chart.addPoint(point)
}

但是我知道这根本没有效率

1 个答案:

答案 0 :(得分:3)

来自docs

list<T>(pathOrRef: PathReference, queryFn?: QueryFn): AngularFireList<T> {
 const ref = getRef(this.database, pathOrRef);
 let query: DatabaseQuery = ref;
 if(queryFn) {
   query = queryFn(ref);
 }
 return createListReference<T>(query, this);
}

list()包含第二个参数,使您可以进行查询,因此您可以执行以下操作:

this.items = db.list('/items', ref => ref.limitToLast(2)).valueChanges()

// subscribe to changes
this.items.subscribe(lastItems =>{
  console.log(lastItems);  
});

valuChanges()返回一个Observable,因此您可以使用subscribe()来接收值。

在此处查看更多信息:

https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md