Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

264
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!