Как получить последний элемент, добавленный в базу данных Firebase в реальном времени? - PullRequest
1 голос
/ 31 марта 2019

Я использую базу данных Firebase в реальном времени для обновления значений в реальном времени внутри графика. Тем не менее, я не знаю, как извлечь последнее значение, добавленное только в базу данных.

Я нашел какое-то объяснение в limitToLast и 'child_added' не работают вместе # 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 Ответ

4 голосов
/ 01 апреля 2019

Из документов :

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

...