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

251
Views
¿Eliminar una colección que incluye una subcolección anidada en firebase?

Tengo el siguiente lote, donde elimino tres documentos en una colección, la colección data-set-c, sin embargo, tiene una colección anidada para mensajes donde cada mensaje es un documento cada uno.

el problema es que la colección (data-set-c) nunca se elimina, no sé si se debe a que se está anidando. ¿La eliminación de esta manera afectará también a la subcolección? o son las reglas las que lo bloquean, ya que mis reglas son específicas para el punto final del nivel más profundo, o debería usar la función de nube en su lugar, ya que este documento será masivo más adelante, y cada día es una recopilación de mensajes, pero el problema principal aquí es cómo elimine esta estructura anidada de un nivel.

¿Podrías echar un vistazo y ver qué estoy haciendo mal?

 // Batch const batch = writeBatch(db); // data-set-a/{Id}/sub-set-a/{subSetId} ---> the direct document const colA = collection(db, data-set-a,_authContext.currentUser.uid, sub-set-a); // data-set-b/{Id}/sub-set-b/{subSetId} ---> the direct document const colB = collection(db, data-set-b, _authContext.currentUser.uid, sub-set-b); // data-set-c/{Id}/sub-set-c/{subSetId}/masseges/{mgsId} /*nested collection*/ const colC = collection(db, 'data-set-c', _authContext.currentUser.uid, sub-set-c); const docA = doc(colA, subSetId); const docB = doc(colB, subSetId); const docC = doc(colC, subSetId); const docsArr = [docA, docB, docC]; docsArr.forEach((col: any) => { batch.delete(col) }); await batch.commit(); // sub-set-a + sub-set-b SECURITY RULES match /data-set-a/Id}sub-set-a/{subId} { allow delete: if request.auth != null && request.auth.token.email_verified && request.auth.uid == Id } // sub-set-c SECURITY RULES match /data-set-c/{Id}/sub-set-c/{subSetId}/masseges/{mgsId} { allow delete: if request.auth != null && request.auth.token.email_verified && request.auth.uid == Id }

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

el problema es que la colección (data-set-c) nunca se elimina.

Ese es el comportamiento esperado. Si elimina un documento, no significa que elimine todas las subcolecciones que existen dentro de ese documento. Además de eso, ese ID de documento seguirá existiendo y Firebase Console lo mostrará en cursiva .

¿La eliminación de esta manera afectará también a la subcolección?

No, no lo hará.

o son las reglas las que lo bloquean, ya que mis reglas son específicas para el punto final del nivel más profundo.

Si se tratara de las reglas de seguridad, habría recibido un error indicándolo.

o debería usar la función de nube en su lugar, ya que este documento será masivo más adelante

Sí, puede usar una función de la nube para eliminar todos los documentos que existen en todas las subcolecciones del documento que se eliminó.

Cómo eliminar esta estructura anidada de un nivel.

Puede lograr esto iterando cada subcolección y eliminando cada documento. ¡Pero no lo hagas en el cliente !

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!