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

249
Visualizações
deleting a collection that includes a nested sub collection in firebase?

I have the following batch, where I delete three documents in a collection, the data-set-c collection however has one nested collection for massages where each message is a doc each.

the problem is that the (data-set-c) collection never gets deleted, I don't know if it is due to the nesting taking place? will deleting this way affect also sub-collection? or is it the rules that are blocking it since my rules are specific to the deepest level endpoint, or should use the cloud function instead since this doc will be massive later on, and each day is massages collection but the main issue here is how to delete this one level nested structure.

could you please take a look and see what I am doing wrong.

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

enter image description here

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

the problem is that the (data-set-c) collection never gets deleted.

That's the expected behavior. If you delete a document, doesn't mean that you delete all sub-collections that exist within that document. Besides that, that document ID will continue to exist and the Firebase Console will display it in italic.

will deleting this way affect also sub-collection?

No, it won't.

or is it the rules that are blocking it since my rules are specific to the deepest level endpoint.

If it was about the security rules, then you would have received an error indicating that.

or should use cloud function instead since this doc will be massive later on

Yes, you can indeed use a Cloud Function to delete all documents that exist in all sub-collection of the document that was deleted.

How to delete this one-level nested structure.

You can achieve this by iterating each sub-collection, and by deleting each document. But don't do it on the client!

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