在 Firebase 中注册后立即将用户信息保存到数据库中

Car*_*arl 0 firebase reactjs google-cloud-firestore

我正在尝试使用 uid 作为文档 ID 将新创建的用户信息保存到 Firestore 中。我遇到的问题是在创建用户之后,为了在创建后将他的信息保存到Firestore集合中。这是我已经尝试过的:

 const usersRef = firebase.firestore().collection('Users');

 firebase.auth().createUserWithEmailAndPassword(values.email, values.password).then(function(user){
  usersRef.doc(`${user.uid}`).set({
    firstName: values.firstName,
    lastName: values.lastName,
    username: values.username,
    uid: user.uid
  })
}).catch(function(error){
  // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // [START_EXCLUDE]
    if (errorCode == 'auth/weak-password') {
      alert('The password is too weak.');
    } else {
      alert(errorMessage);
    }
    console.log(error);
    // [END_EXCLUDE]
});

Run Code Online (Sandbox Code Playgroud)

该代码预计在创建后保存用户的信息,但它会导致以下错误:集合文档 ID 不能未定义等

imj*_*red 6

您正在使用的方法使用 returns Promise<UserCredential>。你的代码应该是:

const usersRef = firebase
  .firestore()
  .collection('Users');

firebase
  .auth()
  .createUserWithEmailAndPassword(values.email, values.password)
  .then(function(userCredential) {
    usersRef
      .doc(`${userCredential.user.uid}`)
      .set({
        firstName: values.firstName,
        lastName: values.lastName,
        username: values.username,
        uid: userCredential.user.uid
      })
      ...
Run Code Online (Sandbox Code Playgroud)