📅  最后修改于: 2023-12-03 14:39:13.962000             🧑  作者: Mango
O AngularFireDatabase é uma biblioteca de integração do Angular com o Firebase Realtime Database. Inicialmente, o AngularFireDatabase era baseado em observables, que são objetos assíncronos muito utilizados no Angular. No entanto, recentemente houve alterações na biblioteca que fizeram com que o AngularFireDatabase deixasse de ser um observable direto.
Observables são objetos que representam fluxos de dados assíncronos. Eles são muito utilizados no Angular para lidar com operações assíncronas, como requisições HTTP e manipulação de dados em tempo real. Os observables possuem métodos como subscribe
, pipe
e map
, que permitem a manipulação de dados de forma simples e concisa.
Antes das alterações recentes no AngularFireDatabase, era possível utilizar os métodos de um observable diretamente em uma referência do Realtime Database. Por exemplo:
import { AngularFireDatabase } from '@angular/fire/database';
constructor(private db: AngularFireDatabase) {
}
getData() {
// Referência a um nó do Realtime Database
const ref = this.db.object('path/to/data');
// Observable fornecido pelo AngularFireDatabase
const data$ = ref.valueChanges();
// Utilização do método subscribe para obter os dados
data$.subscribe(data => {
console.log(data);
});
}
Nesse exemplo, ref.valueChanges()
retorna um observable que contém os dados do nó path/to/data
. Esse observable pode ser utilizado diretamente com o método subscribe
para obter os dados e lidar com eles.
Com as últimas atualizações do AngularFireDatabase, a biblioteca deixou de fornecer diretamente observables. Em vez disso, foram adicionados métodos assíncronos que retornam promessas. Por exemplo:
import { AngularFireDatabase } from '@angular/fire/database';
constructor(private db: AngularFireDatabase) {
}
async getData() {
// Referência a um nó do Realtime Database
const ref = this.db.object('path/to/data');
// Utilização do método snapshotChanges para obter os dados
const snapshot = await ref.snapshotChanges().toPromise();
const data = snapshot.payload.val();
console.log(data);
}
Nesse exemplo, ref.snapshotChanges().toPromise()
retorna uma promessa que responde com um snapshot do nó path/to/data
. É possível aguardar a resolução da promessa com o operador await
e, em seguida, obter os dados utilizando snapshot.payload.val()
.
Embora essa mudança possa exigir uma atualização no código existente, ela permite um código mais transparente e consistente com o Firebase SDK oficial. Além disso, o uso de promessas pode ser mais familiar para desenvolvedores que não estão acostumados com observables.
O AngularFireDatabase deixou de ser diretamente um observable, passando a fornecer métodos assíncronos baseados em promessas para obter os dados do Realtime Database do Firebase. Essa mudança visa oferecer um código mais consistente com o Firebase SDK oficial e pode facilitar a compreensão e adoção da biblioteca por parte dos desenvolvedores.