Ошибка записи в Firebase, но обработчик завершения не вернул ошибку - PullRequest
0 голосов
/ 10 ноября 2019

Этот код работает стабильно в течение года. Однако в одном случае недавно updateChildValues ​​не записывал userDetails в базу данных, но блок else (профиль пользователя успешно создан) все еще выполнялся, приводя к профилю пользователя, который просто содержал значение result.token в ключе fcm-token. Если запись ref.updateChildValues ​​прошла успешно, создается профиль с содержимым userDetails и токеном FCM.

Какие обстоятельства могли вызвать это?

let userDetails: Dictionary<String, Any> = ["userName" : chosenName, "user-level" : BASIC, "email-addr" : emailAddr, ACC_CREATE_DATE_STR : timeStamp, ACC_LAST_ACTIVITY_STR : timeStamp]    
ref.updateChildValues(userDetails, withCompletionBlock: { (error, ref) in
             if let err = error {
                 let createAlert = UIAlertController(title: "Error", message: "Please try again\n\(err.localizedDescription)", preferredStyle: .alert)
                 createAlert.addAction(UIAlertAction(title: "Got it", style: .default, handler: nil))
                 self.present(createAlert, animated: true, completion: nil)
             } else {
                 // user profile created successfully
                 InstanceID.instanceID().instanceID(handler: { (result, error) in
                     if let error = error {
                         print("Error fetching FCM token: \(error)")
                     } else if let result = result {
                        ref.child("fcm-token").setValue(result.token)
                     }
                     self.dismiss(animated: true, completion: nil)
                   })
                 }
               })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...