Estoy siguiendo un tutorial simple en Firebase 9. Todo funcionó bien hasta que intenté usar el método onSnapshot para obtener una instantánea de los cambios en la base de datos cada vez que se produce el cambio. Pero onSnapshot no funciona. Quiero decir que funciona solo para la recuperación inicial de datos, pero no ejecuta la función de devolución de llamada cuando ocurre el cambio. Estoy siguiendo un tutorial, por lo que mi código es idéntico al código del tutorial. Mi pregunta es si hay algo que deba hacer en la consola para corregir esto, algún tipo de reglas o permisos o algo así.
Mi código:
const colRef = collection(db, 'books'); const q = query(colRef, where('author', '==', 'patrick rothfuss')); onSnapshot(q, (snapshot) => { let books = [] snapshot.docs.forEach(doc => { books.push({ ...doc.data(), id: doc.id }) }) console.log(books) })Puede usar el método snapshot.docChanges().forEach para leer y detectar cambios en los datos en tiempo real.
Le recomiendo que use este método para modificar la matriz cuando ocurra un cambio.
Puede ver el código aquí: https://github.com/firebase/snippets-web/blob/1c4c6834f310bf53a98b3fa3c2e2191396cacd69/snippets/firestore-next/test-firestore/listen_diffs.js#L8-L23