[SWIFT] Für Personen, die ein Dokument im Firestore gelöscht haben, aber die Untersammlung nicht verschwindet

Ich habe versucht, die SNS-Posting-Funktion mit Firebase / Firestore zu implementieren.

Obwohl ich die Beiträge (posts / {postId}) gelöscht habe, sind die Untersammlungen (Kommentare / {comment} nicht verschwunden ...

Entschuldigen Sie die überfüllte Notation von Dokument und Untersammlung.

Ich habe dort viel recherchiert, aber ... ・ Löschen mit Cloud-Funktionen

CloudFuctions scheint veraltet zu sein, weil es zu langsam ist.

Aufgrund sorgfältiger Überlegungen beim Betrachten des Lernprogramms

func delete(collection: CollectionReference, batchSize: Int = 100, completion: @escaping (Error?) -> ()) {
        collection.limit(to: batchSize).getDocuments { (docset, error) in
            
            guard let docset = docset else {
                completion(error)
                return
            }
            
            guard docset.count > 0 else {
                completion(nil)
                return
            }
            
            let batch = collection.firestore.batch()
            docset.documents.forEach {batch.deleteDocument($0.reference)}
            batch.commit { (batchError) in
                
                if let batchError = batchError {
                    completion(batchError)
                }
                else {
                    self.delete(collection: collection, batchSize: batchSize, completion: completion)
                }
            }
        }
    }

Diese Funktion hat gut funktioniert. Bitte wenden Sie den Fertigstellungsteil entsprechend Ihren Vorstellungen an.

Es ist für mein eigenes Memo und ich hoffe, es hilft, weil jeder es tun kann.

Recommended Posts

Für Personen, die ein Dokument im Firestore gelöscht haben, aber die Untersammlung nicht verschwindet
darf nicht in der for-Anweisung zurückgegeben werden
Eine Einführung in Java, die Menschen erzählt, die schon lange C-Sprache sprechen
Funktioniert die Escape-Sequenz (\) nicht? (für Mac)
Richtlinien für die Schreibverarbeitung, wenn Werte in Java vorhanden sind / nicht vorhanden Optional