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

171
Vistas
No se pueden procesar por lotes los documentos de una subcolección

Tengo una colección llamada pantalla y cada documento dentro de la pantalla tiene una subcolección llamada historial. Sin embargo, no hay ningún error, no elimina los documentos en Firestore. Después de seleccionar la fila que se eliminará, desaparecerá cuando haga clic en Eliminar. Sin embargo, una vez que vuelve a cargar la pantalla, los datos eliminados aún estaban allí, lo que significa que no se eliminaron correctamente en Firestore.

Recreé el error que tengo en el código sandbox: https://codesandbox.io/s/batch-delete-not-working-vcqcd3?file=/src/App.js

 async function batchDeleteDocuments(docID, historyId) { try { console.log(docID, "docs"); console.log(historyId, "history"); const batch = writeBatch(db); for (let i = 0; i < docID.length; i++) { const docRef = doc(db, "display", docID[i], "history", historyId[i]); console.log(i, "deleting", docRef.path); batch.delete(docRef); } await batch.commit(); console.log("deleted"); } catch (err) { console.log(err); } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Al verificar su codeandbox, el campo docID tiene un espacio en blanco al comienzo de la cadena. Vea la captura de pantalla de sus registros de codesandbox: ingrese la descripción de la imagen aquí

Al profundizar en su código, no encontré problemas con la forma en que obtiene sus datos. Es solo que cuando intenta registrar su doc.data() en esta consulta:

 const getUsers = async () => { const listUsers = query(collectionGroup(db, "history")); const querySnapshot = await getDocs(listUsers); const arr = []; querySnapshot.forEach((doc) => { console.log(doc.id, " => ", doc.data()); arr.push({ ...doc.data(), id: doc.id }); }); if (isMounted) { setUsers(arr); } };

El valor de docID en su documento tiene espacios en blanco. Verifique los valores de docID en sus documentos de la colección de history y asegúrese de haber eliminado todos los espacios en blanco. ingrese la descripción de la imagen aquí

También intenté reemplazar el docID[i] en esta consulta y eliminé el documento con éxito.

 // Try to change docID[i] to hard-coded value. const docRef = doc(db, "display", "Tv9xj0pC9wTjr59MPsJw", "history", historyId[i]);

También puede usar el método trim() para la solución. Vea el código a continuación:

 for (let i = 0; i < docID.length; i++) { console.log(docID[i].trim()); const docRef = doc( db, "display", docID[i].trim(), "history", historyId[i] ); console.log(i, "deleting", docRef.path); batch.delete(docRef); }
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