Michele Zeoli
Michele Zeoli

Reputation: 11

Firebase realtime database error: user is null

Screenshot error

I want read firebase realtimedatabse data and result is an error: user is null and other error, it's another method to do this, i cannot read file in firebase realtime database

auth.onAuthStateChanged((firebaseUser) => {
if (firebaseUser) {
    console.log('login-form.js | logged')
    const logged = true;
    showHomepage();
    const auth2 = firebase.auth()
    const user = auth2.currentUser;
    var email = user.email
    console.log(email)
    var namee = email
    namee = namee.replace('.','')
    namee = namee.replace('$','')
    namee = namee.replace('#','')
    namee = namee.replace('/','')
    namee = namee.replace('[','')
    namee = namee.replace(']','')
    console.log(namee)
    var ref = db.ref("/Utenti/" + namee + '/');
    ref.on("value", function(data, prevChildKey) {
        const user = data.val();
        console.log(user.soldi)
        document.getElementById('money').innerHTML = user.soldi + '€' 
    }, function (error) {
    console.log("Error: " + error.code);
    }); 
}
});

Upvotes: 1

Views: 136

Answers (1)

kvooak
kvooak

Reputation: 293

In your case, you can get user data (email, uid, ...) from firebaseUser variable, without calling firebase.auth().currentUser

firebase.auth().onAuthStateChanged((firebaseUser) => {
  if (firebaseUser) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var email = firebaseUser.email;
    var namee = email;
    // ...
  } else {
    // User is signed out
    // ...
  }
});

Also, your screenshot and your code, it seems like the issue is that your auth function don't return user data, not that it cannot get user data from firebase. You can use a wrapper function to wrap outside your firebase.auth().onStateChanged() call, with a callback function, to get and return firebase user data:

export const firebaseWrapper = (callback) => {
  firebase.auth().onAuthStateChanged((firebaseUser) => {
    if (firebaseUser) {
      // User is signed in, see docs for a list of available properties
      // https://firebase.google.com/docs/reference/js/firebase.User
      var email = firebaseUser.email;
      var namee = email;
      // ...
      callback(firebaseUser);
    } else {
      // User is signed out
      // ...
      callback(null);
    }
  });
}

This callback() function can be a dispatch function, or a setState() or equivalent, depending on what you need.

Upvotes: 1

Related Questions