Estoy tratando de usar la versión modular de Firebase v9 y no sé cómo usar onSnapshot. Estoy tratando de ejecutar una consulta y escuchar los documentos.
El siguiente es mi código:
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; }); }) ); } Esperaba un Observable<board[]> , pero obtengo un Observable<unsubscribe>
¿Hay alguna manera de que pueda hacer lo siguiente?
boards$: Observable<board[]>; ... this.boards$ = getUsersBoards();Obtienes Observable<unsubscribe> porque, de acuerdo con los documentos de Firebase, onSnapshot devuelve "[una] función de cancelación de suscripción que se puede llamar para cancelar el oyente de instantáneas".
Intente convertir la instantánea en un observable primero, antes de regresar. Por ejemplo:
new Observable(observer => { return onSnapshot(reference, (snapshot => observer.next(snapshot.data())), (error => observer.error(error.message)) ); });