Если вы используете angularfire2
, вы можете прослушать изменения Firestore с помощью .valueChanges()
user$: Observable<User> = this.afs.doc(`Users/${uid}`).valueChanges();
userSubscription: Subscription = this.user$
.subscribe((data) => {
console.log('user$ observable data: ', data);
});
Если вы хотите включить метаданные, такие как идентификатор документа, вы можете использовать .snapshotChanges()
и получить данные, используя несколько map
s.
Если вы используете RxJS 6, это может выглядеть примерно так:
user$: Observable<User> = this.afs.doc(`Users/${uid}`)
.snapshotChanges()
.pipe(
map(changes => {
changes.map(change => {
return change.payload.doc.data();
})
})
);
userSubscription: Subscription = this.user$
.subscribe((data) => {
console.log('user$ observable data with metadata: ', data);
});
или та же .snapshotChanges()
функциональность, но короче:
user$: Observable<User> = this.afs.doc(`Users/${uid}`).snapshotChanges().pipe(
map(changes => changes.map(change => change.payload.doc.data() )) );
userSubscription: Subscription = this.user$.subscribe((data) => console.log(data));