Firebase / React Native - 断言失败

时间:2017-07-07 13:31:09

标签: javascript firebase react-native firebase-realtime-database firebase-authentication

我有一个问题,我没有找到太多信息,我甚至阅读this但我找不到这个例外的解决方案:

  

断言失败:opt_onRejected应该是一个函数。您是否将opt_context作为第二个参数而不是第三个参数传递?

这是我的函数抛出异常:

  const {currentUser} = firebase.auth()
  const credential = firebase.auth.EmailAuthProvider.credential(
   currentUser.email, 
   password)

  return (dispatch) => {
   currentUser.reauthenticate(credential) // 1. Re-authenticate
   .then(
     console.log("RE-AUTH"),
     currentUser.updateEmail(strEmail) // 2. Update email
     .then(
       console.log("MAIL UPDATE"),
       firebase.database().ref(`users/${currentUser.uid}/`) // 3. Update profile email
        .update({email})
        .then(console.log("PROFILE UPDATE"))
        .catch(error => console.log(error))
      )
      .catch(error => console.log(error))
    )
    .catch(error => console.log(error))
  }

它可以更改电子邮件地址,但例外显示......

1 个答案:

答案 0 :(得分:0)

解决了问题,我添加了更多console.log()以找出我的承诺 答案未得到正确处理(link)。

如果有人需要采取有效的电子邮件更改行动:

currentUser.reauthenticate(credential) // Re-authenticate
.then(() => {
  currentUser.updateEmail(strEmail) // Update email
  .then(() => {
    firebase.database().ref(`users/${currentUser.uid}/`) // Update profile email
    .update({email})
    .then(() => 
      Alert.alert("Modification saved."),
      emailSaveSuccess(dispatch)
    )
    .catch(error => console.log(error))
  })
  .catch(error => emailSaveError(dispatch, error))
})
.catch(error => emailSaveError(dispatch, error))