Estou tentando excluir recursivamente um documento do Firestore e suas subcoleções, mas estou tendo um problema quando a função encontra um documento aninhado que contém subcoleções.
Aqui está a estrutura com a qual estou lidando:
parentCol/uid/childCol_1/child_Doc1
parentCol/uid/childCol_1/child_Doc1/child_Col2/child_Doc2
Eu escrevi a seguinte função delete recursiva, mas quando ela encontra child_Doc1, que tem subcoleções, ela parece parar e não exclui os dados aninhados sob child_Col2. Em vez disso, ela apenas registra o caminho e não prossegue.
// parentCol/uid/childCol_1/child_Doc1
// parentCol/uid/childCol_1/child_Doc1/child_Col2/child_Doc2
const deleteDocumentAndCollections = async (path: string): Promise<void> => {
try {
console.log('deletePath:====>', path);
// Get a reference to the initial document
const documentRef = firestore.doc(path);
// List all subcollections under the document to delete
const subcollections = await documentRef.listCollections();
console.log('Subcollections:====>', subcollections);
// Error deleting document and subcollections: Error: Value for argument "documentPath" must point to a document,
// but was parentCol/uid/childCol_1/
// Your path does not contain an even number of components.
// Recursively process and delete each subcollection
for (const subcollection of subcollections) {
try {
// Call the function recursively to delete the subcollection recursively
await deleteDocumentAndCollections(subcollection.path);
} catch (error) {
console.error('Error processing subcollection:', error);
}
}
// Now, delete the document itself
console.log('Deleting document:', documentRef.path);
await documentRef.delete();
console.log('Successfully deleted document:', documentRef.path);
} catch (error) {
console.error('Error deleting document and subcollections:', error);
}
};