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

141
Vistas
Pasar una función asíncrona a onSnapshot

Necesito ejecutar una función asíncrona desde onSnapshot, pero onSnapshot no es una función asíncrona en sí. ¿Cómo puedo ejecutar una función asíncrona al recibir una notificación de que mi colección ha cambiado? ¿Hay alguna manera de evitar esto?

 //Adds a listener to the user's offercandidate doc then sets the remote description to what appears in the document let unsubscribeFromOffer = negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("offer-candidates") .onSnapshot(() => { postReturnAnswer(); }); async function postReturnAnswer() { let doc = await negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("offer-candidates") .doc("offer") .get(); let newPeerConnection = new UserConnection( servers, doc.data()["offer"]["senderID"] ); newPeerConnection.userPeerConnection.setRemoteDescription( doc.data()["offer"]["offer"] ); let connAnswerDescription = await peerConnection.userPeerConnection.createAnswer(); await peerConnection.userPeerConnection.setLocalDescription( connAnswerDescription ); await negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("answer-candidates") .add({ answer: JSON.stringify( peerConnection.userPeerConnection.localDescription ), }); peerConnections.push(peerConnection); }

Mensaje de error:

Error

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

0

Según su código anterior, obtiene un solo documento en su función asíncrona. Mirando Get a Document , muestra cómo recuperar correctamente el contenido de un solo documento usando get():

Logré obtener el error de indefinido usando su código anterior. Usar el código en la documentación resolvería su error. Es posible que desee ver el código a continuación:

 let unsubscribeFromOffer = negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("offer-candidates") .onSnapshot(() => { postReturnAnswer(); }); async function postReturnAnswer() { let doc = await negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("offer-candidates") .doc("offer") .get() // This would map the data from the document .then((doc) => { // Check if the document exists. if (doc.exists) { let newPeerConnection = new UserConnection( servers, // On this line, you already accessed on document level so you wont need to call the document again, just call the fieldname. doc.data().Fieldname ); newPeerConnection.userPeerConnection.setRemoteDescription( // Same with this one. doc.data().Fieldname ); let connAnswerDescription = await peerConnection.userPeerConnection.createAnswer(); await peerConnection.userPeerConnection.setLocalDescription( connAnswerDescription ); await negDoc .collection("users") .doc(sessionStorage.getItem("userID")) .collection("answer-candidates") .add({ answer: JSON.stringify( peerConnection.userPeerConnection.localDescription ), }); peerConnections.push(peerConnection); } else { // doc.data() will be undefined in this case console.log("No such document!"); } }).catch((error) => { console.log("Error getting document:", error); }); }
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