Estoy usando Google Firebase para mi backend. Tengo un formulario de registro que el usuario llena.
Una vez que el proceso es exitoso, se dirige al usuario a la página de inicio donde debe decir:
"Bienvenido, {user's firstName} "
const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [phoneNum, setPhoneNum] = useState(''); const onSignUp = () => { auth .createUserWithEmailAndPassword(email, password) .then(userCredentials => { firebase .firestore() .collection('users') .doc(firebase.auth().currentUser.uid) .set({ firstName, lastName, email, phoneNum }); const user = userCredentials.user; console.log('Registered with:', user.email); console.log(user.firstName); }) .catch(error => console.log(error.message)); }; Cuando consuelo registro user.email funciona, sin embargo, cuando consuelo registro firstName , se registra como indefinido. Cuando compruebo firebase, tiene un usuario registrado con todos los campos completados (firstName, lastName, phoneNum) .
¿Cómo puedo recuperar el nombre del usuario?
Está intentando acceder a información de los datos de usuario de autenticación de Firebase que no están definidos allí.
Código de refactorización como se muestra a continuación:
const onSignUp = () => { auth .createUserWithEmailAndPassword(email, password) .then(async (userCredentials) => { const usersRef = firebase.firestore().collection("users"); const user = userCredentials.user; const userId = user.uid; // Add new user to USERS' collection await usersRef.doc(userId).set({ userId, firstName, lastName, email, phoneNum, }); // Fetch registered user information const userDoc = await usersRef.doc(userId).get(); const regiteredUser = userDoc.data(); console.log( "Registered with:", regiteredUser.email, regiteredUser.firstName, firstName.lastName ); }) .catch((error) => console.log(error.message)); };