Firebaseのリレーションで関連づいているモデルのdelete(削除)について説明します。

実際のコードにコメントしていきます。
Thoughtモデルが親で、Commentsモデルが子になります
Firebaseはcollection document の組み合わせになります。
NoSqlのDocument,Collectionについてよくわからないという方はこちらを御覧ください。
collection document についての説明はこちら

ポイント

runTransactionメソッドを利用する
親モデルにdocumentIdをもたせておく。それでアクセスする
子モデルにもdocumentIdカラムをもたせておく。

documentIdをもたせるというのがわかりにくい方は、こちらを参照ください。

FirebaseのDBの構造はこんなイメージです。

Firebase Deleteの実装



//firestoreをインスタンスにしてメンバにしておく
let firestore = Firestore.firestore()

//runTransactionメソッドを利用
firestore.runTransaction({ (transaction, error) -> Any? in
                
              //collectionで親テーブルを取得して、更にdocumentIdを利用して、そこから1階層下の子モデルにアクセス         
                let commentRef = 
self.firestore.collection(THOUGHTS_REF).document(self.thought.documentId).
collection(COMMENT_REF).document(comment.documentId)
                
 //transaction.delteに削除したいdocumentを渡す
                transaction.deleteDocument(commentRef)
                
                return nil
            }) { (object, error) in
                if let error = error{
                    debugPrint(error)
                }else{
                    self.dismiss(animated: true, completion: nil)
                }
            }
            
        }

 

Deleteはそれほど難しくありません。
ただ、階層が深くなると大変です。
上記からもわかるように、Firebaseでは、階層がなるべく深くならないように設計することが大切です。
理由は、最上位のCollectionから取得していかないとデータがgetできないからです。