Firebase v9模块化-如何使用onSnapshot返回可观察的



我正在尝试使用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))
);
});

最新更新