我正在尝试使用Firebase v9模块化版本,但我对如何使用onSnapshot感到困惑。我正在尝试执行一个查询并监听文档。
以下是我的代码:
getUsersBoards(){
return this.authService.currentUser$.pipe(
filter((user)=> !!user),
mergeMap(async (user) => {
const collectionRef = collection(this.firestore, 'boards');
const q = query(collectionRef, where("owner", "==", user.uid));
return onSnapshot(q, (querySnapshot)=>{
return querySnapshot;
});
})
);
}
我本来期待着Observable<board[]>
,但我得到了Observable<unsubscribe>
有没有办法让我做以下事情?
boards$: Observable<board[]>;
...
this.boards$ = getUsersBoards();
您得到Observable<unsubscribe>
是因为,根据Firebase文档,onSnapshot
返回"[a] n取消订阅函数,可以调用该函数来取消快照侦听器">
请先尝试将快照转换为可观察的快照,然后再返回。例如:
new Observable(observer => {
return onSnapshot(reference,
(snapshot => observer.next(snapshot.data())),
(error => observer.error(error.message))
);
});