我有一个可观察的user
,我想向其中添加一个Firestore文档。现在,我在IDE中遇到错误:“类型'DocumentData'无法分配给类型'可观察'。”我该怎么做?我也想听听变化。
//The observable
user: Observable<User>;
//Fetching the user, then trying to assign it to the variable
this.afs.doc(`Users/${uid}`).ref.get().then((doc)=> {
this.user = doc.data();
})
答案 0 :(得分:0)
如果您使用的是angularfire2
,则可以使用.valueChanges()
收听Firestore的更改
user$: Observable<User> = this.afs.doc(`Users/${uid}`).valueChanges();
userSubscription: Subscription = this.user$
.subscribe((data) => {
console.log('user$ observable data: ', data);
});
如果要包含元数据(例如文档ID),则可以使用.snapshotChanges()
并使用几个map
来获取数据。
如果您使用的是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));