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

250
Vistas
¿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 Respuestas
Responde la pregunta

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