I’m trying to set user data into the realtime database. To do that I want the uid of the current user who is logged in. But when I use the firebase.auth().currentUser.uid; I’m getting the previous uid.
Here’s the code:
// Your web app's Firebase configuration // For Firebase JS SDK v7.20.0 and later, measurementId is optional var firebaseConfig = { apiKey: "*", authDomain: "*", databaseURL: "*", projectId: "*", storageBucket: "*", messagingSenderId: "*", appId: "*", measurementId: "*" }; // Initialize Firebase firebase.initializeApp(firebaseConfig); //sign up the user const auth = firebase.auth(); var user_info_reference = firebase.database(); document.getElementById('register-form').addEventListener('submit', submitInfo); //signup function const signupForm = document.querySelector('#register-form'); signupForm.addEventListener('submit', (e) => { e.preventDefault(); const email = signupForm['email_up'].value; const password = signupForm['pass_up'].value; //auth with firebase auth.createUserWithEmailAndPassword(email, password).then(cred => { console.log(cred.user); signupform.reset(); user_id = firebase.auth().currentUser.uid; }).catch(function(error){ var errorcode=error.code; var errormsg=error.message; }); }); //saving user info //submitting info about name function submitInfo(e){ e.preventDefault(); //get values var name = getInputval('name_up') saveInfo(name); //get id val function getInputval(id){ return document.getElementById(id).value; } function saveInfo(name){ var new_user_info = user_info_reference.ref('user_info/'+ auth.currentUser.uid); new_user_info.set({ name: name }); } }
Don’t mind the (*) in the config, I just don’t want to show that information.
Advertisement
Answer
If you want to get the UID of the current user right after they signed in, you can get if from cred
:
auth.createUserWithEmailAndPassword(email, password).then(cred => { user_id = cred.user.uid; ...