Пользователь Firebase, хранящийся в localstorage, не работает?(JavaScript) - PullRequest
0 голосов
/ 25 сентября 2018

Я сохраняю пользовательский объект в localstorage при создании (чтобы быть уверенным, что я смогу использовать его позже внутри пользовательской функции, за пределами authStateChanged):

const promise = auth.createUserWithEmailAndPassword(email, pass);
  promise.then(e => {
    var user = firebase.auth().currentUser;
    localStorage.setItem('fireUser', JSON.stringify(user));
    user.sendEmailVerification();
  }).catch(function(error) {
  var errorCode = error.code;
  var errorMessage = error.message;
  });

, затем я получаю его внутри моегопользовательская функция ниже, она работает, когда используется как user.uid, но выдает ошибку «user.delete не функция», когда используется как user.delete(), почему?переменная user выглядит так в localStorage:

enter image description here

моя пользовательская функция:

var myTimer;
function validTimer(timerValid){
  var user = JSON.parse(localStorage.getItem('fireUser'));
  // var buser = firebase.auth().currentUser; <-- doesn't work here
  myTimer = setInterval(function() {
      timerValid++;
      localStorage.setItem('fireTimer', timerValid);
      if (timerValid == 22) {
        // delete in database
        var userId = user.uid;
        var ref = firebase.database().ref().child('users');
        ref.child(userId).once("value", function(snapshot){
          if (snapshot.exists()){
            database.ref("users/"+userId).remove();
          }
        });
        // delete account
        user.delete().then(function() {  // this says user.delete is not a function
        }).catch(function(error) {
        });
      }
  }, 1000);
}

1 Ответ

0 голосов
/ 25 сентября 2018

Он лишается методов экземпляра, когда вы переводите его в строку и анализируете его.Метод delete является методом экземпляра для пользовательского объекта firebase.В этом случае ваш пользователь, хотя и выглядит одинаково, не является пользователем Firebase.Это просто пустой объект.

Edit

Для сохранения пользователя firebase через Client SDK вы хотите использовать метод firebase.auth().onAuthStateChanged().Вскоре после перезагрузки вашей страницы этот метод сработает.Установите это здесь.Прямо из веб-руководства по началу работы :

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    var displayName = user.displayName;
    var email = user.email;
    var emailVerified = user.emailVerified;
    var photoURL = user.photoURL;
    var isAnonymous = user.isAnonymous;
    var uid = user.uid;
    var providerData = user.providerData;
    // ...
  } else {
    // User is signed out.
    // ...
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...