如果 Firebase 数据库部分中的数据未定义,我如何更新配置文件?

How I can updateProfile if data undefined in Firebase Database section?

我无法克服这个错误 TypeError: createdUser.updateProfile is not a function at _callee2$ (authActions.jsx:22) 通过 Firebase 设置我的注册表时。

当我删除代码的注释 "Update the auth profile" 部分时,注册表会通过,但我的文档在 Firebase 数据库部分未定义。

export const registerUser = (user) => 
  async (dispatch, getState, {getFirebase, getFirestore}) => {
    const firebase = getFirebase();
    const firestore = getFirestore();
    try {
      // create the user in firebase auth
      let createdUser = await 
      firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
    //update the auth profile
    await createdUser.updateProfile({
      displayName: user.displayName
    }) 
    // create a new profile in firestore
    let newUser = {
      displayName: user.displayName,
      createdAt: firestore.FieldValue.serverTimestamp()
    }
    await firestore.set(`users/${createdUser.uid}`, {...newUser})
    dispatch(closeModal());
  } catch (error) {
    console.log(error)
    throw new SubmissionError({
     _error: error.message
    })
  }
}

createUserWithEmailAndPassword returns a promise that resolves with a UserCredential.

您需要改为:

let userCredential = await 
    firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
//update the auth profile
await userCredential.user.updateProfile(...);
 firebaseService.auth().createUserWithEmailAndPassword(email,password).then((user) => {
    this.setState({message:'User Account created successfully', showExam:true});
    })
    .then(() =>{
      firebaseService.auth().onAuthStateChanged(user => {
        if (user) {
          console.log(this.state.lastName);
          user.updateProfile({ // <-- Update Method here
            displayName: firstName + " " + lastName,
          }).then(() =>{
            console.log("click the link in your email to verify your account");
          }, error => {
            console.log("update failed",error);
          });     
        }
      });
    })