Swift 如何使对Firebase的多次呼叫更安全?-敏捷的
因此,我的应用程序中有一个“删除帐户”按钮,当用户点击它时,它会删除身份验证帐户以及其他3个Firestore文档。我担心一个功能可能成功,而其他功能可能失败。我如何确保如果一个功能失败,所有功能都会失败Swift 如何使对Firebase的多次呼叫更安全?-敏捷的,swift,firebase,google-cloud-firestore,firebase-authentication,Swift,Firebase,Google Cloud Firestore,Firebase Authentication,因此,我的应用程序中有一个“删除帐户”按钮,当用户点击它时,它会删除身份验证帐户以及其他3个Firestore文档。我担心一个功能可能成功,而其他功能可能失败。我如何确保如果一个功能失败,所有功能都会失败 func deleteUser () { let currentUser = Auth.auth().currentUser Auth.auth().currentUser?.delete(completion: { (error) in
func deleteUser () {
let currentUser = Auth.auth().currentUser
Auth.auth().currentUser?.delete(completion: { (error) in
if error != nil { return }
else {
Firestore.firestore().collection("Users").document(currentUser!.uid).delete { (error) in
if error != nil { return }
else {
Firestore.firestore().collection("Posts").document(currentUser!.uid).delete { (error) in
if error != nil { return }
else {
transitionToHomeScreen()
}
}
}
}
}
})
}
首先,您可能应该在删除用户之前删除文档。如果先删除用户,则用户可能会失去删除其文档的能力,具体取决于您的安全规则允许的内容 其次,无法确保Firebase Auth和Firestore之间以及任何两个Firebase产品之间的事务一致性。如果Firestore中出现故障,则无法自动回滚对Auth的更改,反之亦然。如果需要回滚更改,则必须为此编写代码
如果要确保同时删除多个文档,应使用确保同时删除所有文档或不删除任何文档。首先,您可能应该在删除用户之前删除这些文档。如果先删除用户,则用户可能会失去删除其文档的能力,具体取决于您的安全规则允许的内容 其次,无法确保Firebase Auth和Firestore之间以及任何两个Firebase产品之间的事务一致性。如果Firestore中出现故障,则无法自动回滚对Auth的更改,反之亦然。如果需要回滚更改,则必须为此编写代码 如果要确保同时删除多个文档,应使用来确保同时删除所有文档或不删除任何文档