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

143
Vistas
La colección y la subcolección onSnapshot de Firebase se fusionan con el gancho useEffect

oye, tengo datos que se ven así en mi base de datos de Firestore

  • carpetas
    • randomkeyGenerator: tiene campos como el nombre de la carpeta, el icono, etc.
      • la subcolección llama Tareas: tiene muchos documentos y cada documento tiene valores como título, etc.

lo que quiero hacer es obtener todas las carpetas para un usuario específico y su subcolección, cuyo resultado debería verse así

 data = [{folderId: "randomkeyGenerator" , folderTitle: "work", folderIcon: "👍🏻", Tasks: [{},{},{},{}]}, {other folder etc....}]

aquí está mi código con el gancho useEffect. Hice todo bien, pero aún muestra una matriz vacía o, a veces, solo muestra campos de carpeta sin Tareas o una matriz vacía en las tareas. Aquí está el resultado.

 Array [ Object { "Tasks": Array [], "folderIcon": "😨", "folderId": "3QwC21noAwmvUAVXhJfs", "folderTitle": "Work", }, Object { "Tasks": Array [], "folderIcon": "🤵🏿", "folderId": "ewRYhuI1TGxL1EhGq5ZB", "folderTitle": "Untitled", }, ]

aquí está mi código:

 useEffect(() => { setLoading(true); const subscriber = taskRef .where("userID", "==", user.userId) .orderBy("createdAt") .onSnapshot((querySnapshot) => { const queryData = []; querySnapshot.forEach((documentSnapshot) => { const queryObject = { folderId: documentSnapshot.id, folderIcon: documentSnapshot.data().Icon, folderTitle: documentSnapshot.data().name, Tasks: [], }; documentSnapshot.ref .collection("Tasks") .where("userID", "==", user.userId) .onSnapshot((querySnapshotTasks) => { querySnapshotTasks.forEach((documentSnapshotTask) => { queryObject.Tasks.push({ ...documentSnapshotTask.data(), key: documentSnapshotTask.id, }); }); }); queryData.push(queryObject); }); console.log(queryData); setData(queryData); setLoading(false); }); return () => subscriber(); }, []);
about 4 years ago · Juan Pablo Isaza
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