2

我有一個表單,用電子郵件,密碼,全名和電話號碼註冊新用戶。firebase多位置更新用戶身份驗證和數據庫

如果成功,我可以使用firebase.auth().createUserWithEmailAndPassword創建新用戶。然後我使用firebase.database().ref('users/..').set(..)將全名和電話號碼保存到firebase數據庫。

但是,如果對數據庫的保存處理髮生錯誤(例如,通過規則寫入:false),我仍然有用戶身份驗證中創建的用戶標識符。所以用戶不存在電話號碼和完整號碼。

我怎樣才能多位置插入用戶身份驗證和數據庫。如果其中一個失敗的Firebase自動拒絕插入新的標識符並插入到數據庫中。 (如果成功,處理只返回成功)。

回答

1

無法使組合的Auth和數據庫操作原子化。如果你想成爲原子,你應該只使用一種服務:數據庫認證。

爲了實現這個原子,您可以將用戶名,密碼,全名和電話號碼傳遞給雲端函數中的HTTP函數。然後creates a user with the email and password,然後將全名和電話號碼寫入數據庫。

但請注意,這仍然不能保證是原子的:您在手機上預期的相同故障可能發生在服務器上。雖然機會小得多,但沒有保證。

這意味着您需要確保您的代碼足夠健壯以處理全名和電話號碼丟失的情況。如果你需要在服務器端的情況下做到這一點,那麼如果你將跨產品代碼留在客戶端上,它也可以工作。