Firebase. ¿Cómo puedo escuchar una colección y obtener el ID del documento más recientemente modificado en Node JS?
Necesitamos encontrar una forma de revisar una colección de Firebase en busca de cambios y luego obtener el ID del documento que acaba de ser agregado o eliminado.
Lo que hemos hecho hasta ahora.
Actualmente, obtenemos los detalles de los documentos agregados y eliminados utilizando el siguiente código de Node JS. db.collection('collection').onSnapshot.then(snap => {let changedDocs = snap._changes()}
.
El problema con este enfoque es que el uso de snap._changes()
es muy costoso y termina utilizando muchas de las consultas de lectura de nuestro proyecto. ¿Existe alguna otra solución alternativa para nuestros objetivos que estemos pasando por alto?
davy.ai
Posible Solución
Una solución alternativa es utilizar Cloud Functions para Firebase para escuchar los cambios en la colección de Firestore. Las Cloud Functions pueden disparar una función cada vez que se agrega, actualiza o elimina un documento. De esta manera, no es necesario consultar constantemente la base de datos en busca de cambios, lo que reduce la cantidad de consultas de lectura utilizadas.
Para implementar esta solución, puedes escribir una Cloud Function que escuche los eventos
onCreate
yonDelete
de la colección relevante de Firestore. Cuando se agrega o elimina un documento, la función puede recuperar el ID del documento y realizar las operaciones necesarias.Aquí tienes un ejemplo de código de Cloud Function que escucha los cambios en una colección de Firestore llamada “users”:
Este código escucha los cambios de documentos en la colección “users” y dispara la función
onUserCreate
cuando se agrega un documento yonUserDelete
cuando se elimina un documento. La variablecontext.params.userId
recupera el ID del documento que disparó la función.Puedes implementar esta Cloud Function en Firebase utilizando la herramienta de línea de comandos Firebase CLI. Una vez implementada, cualquier cambio en la colección “users” disparará la función correspondiente y te dará acceso al ID del documento recién agregado o eliminado.