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

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

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 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!