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