Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

267
Vistas
NuxtJS y Firebase Web SDK Beta v9: ¿Cómo agregar un oyente en tiempo real a Firestore?

Estoy usando el nuevo Firebase Web SDK v9 (beta 8) con NuxtJS2. Tengo un componente secundario que permite a un usuario editar los datos de su publicación. Esto actualiza un documento en Firestsore con los nuevos cambios de publicación. Sin embargo, mi pregunta es... ¿cómo hago para que mi componente principal obtenga actualizaciones en tiempo real de estos nuevos datos?

Dejame explicar:

Tengo la siguiente estructura de componentes de ejemplo en la aplicación:

 <PostCardDetail> <PostEdit /> </PostCardDetail>

Sección del script PostCardDetail.vue donde estoy haciendo la obtención de datos:

 import { doc, getDoc } from 'firebase/firestore' import { mapGetters } from 'vuex' import { db } from '~/plugins/firebase' export default { name: 'PostCardDetail', data() { return { post: {} } }, async fetch() { const docRef = doc(db, 'posts', this.$route.params.postId) const docSnap = await getDoc(docRef) this.post = docSnap.data() }, mounted () { // I believe I will need to mount the realtime listener here? }, } </script>

La sección del script PostEdit.vue donde estoy editando los datos:

 editPost() { const postRef = doc(db, 'posts', this.post.id) await updateDoc(postRef, { ...editedPost, updatedAt: serverTimestamp() }) console.log('updated!') this.$store.dispatch('edit', false) alert('Post successfully updated!') }

Puedo editar correctamente los datos, pero para ver los últimos cambios, necesito actualizar manualmente el navegador. ¿Cómo puedo obtener una actualización automática en tiempo real con firestore después de que el usuario edite la publicación? ¿Supongo que este oyente estará en la propiedad de gancho montada () de PostCardDetail ?

Mi intento:

 mounted() { // eslint-disable-next-line no-unused-vars const unsub = onSnapshot( doc(db, 'posts', this.$route.params.postId), (snapshot) => { this.post = snapshot.data() } ) }

Esto PARECE funcionar bien, pero se siente un poco torpe. ¿Es esta la forma recomendada de abordar esto con NuxtJS?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La consulta se ve perfectamente bien y es similar a la mencionada en la documentación .

Supongo que este oyente estará en la propiedad de gancho montada () de PostCardDetail

Idealmente, es posible que desee configurar el oyente una vez que se crea el componente y, en su mayoría, he visto que los oyentes se configuran en created()

 created() { const unsub = onSnapshot( doc(db, 'posts', this.$route.params.postId), (snapshot) => { this.post = snapshot.data() } ) }

Para usar el unsub en otro lugar, puede configurarlo en la propiedad de datos o pasarlo a otros componentes según su caso de uso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda