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

179
Vistas
No se puede desestructurar la propiedad 'chat' de '_ref' ya que no está definida (firebase & react)

Tengo este código que se ejecuta para obtener datos de una colección de firebase:

 useEffect(() => { db.collection("chatLists") .onSnapshot((snapshot) => { if(snapshot) { let chattingLists = snapshot.docs.map((doc) => { if(doc.data().users.includes(user.email)) { return { chat: doc.data(), id: doc.id }; } }) if(chattingLists !== [undefined]) { setChatLists(chattingLists ? chattingLists : []); } } })}, []);

Básicamente, estoy obteniendo todos los documentos de la colección 'chatLists' y viendo si una matriz llamada "usuarios" que tiene dos usuarios incluye el nombre de los usuarios actuales que están usando la aplicación, si lo hacen, los devuelvo todos y se ingresan todos los documentos filtrados dentro de la variable chattingLists. Luego lo configuro en un useState y luego trato de mapearlos todos:

 return ( <div> <button onClick={addChat}> Add a chat </button> <> {chatLists !== undefined && chatLists.map(({chat, id}) => ( <p>{id}</p> {/*Anything that i try to get from the chat or id doesn't work and i get error message*/} ))} </> </div>

)

Sin embargo, aparece el error: "No se puede desestructurar la propiedad 'chat' de '_ref' porque no está definida".

Y lo extraño es que en algunos usuarios de Chrome funciona perfectamente como quiero y sin errores, pero en otros recibo el mensaje de error anterior.

Además, cada documento en las listas de chat se ve así: ingrese la descripción de la imagen aquí

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

0

  1. Puede usar el operador de consulta array-contains en lugar de obtener todos los documentos de la colección y filtrarlos manualmente. Esto le ahorrará muchos cargos de lectura.

  2. Debe devolver un valor de la función en el map , pero actualmente no devuelve nada cuando el documento no contiene un correo electrónico dado y, por lo tanto, hay elementos indefinidos en esa matriz.

Intente refactorizar el código como se muestra a continuación:

 useEffect(() => { db.collection("chatLists") .where("users", "array-contains", "user.email") .onSnapshot((querySnapshot) => { const chats = querySnapshot.docs.map((d) => ({ id: d.id, chat: d.data(), })); setChatLists(chats); }); }, []);
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