Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

166
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda