首页 文章

Firebase - 未捕获(承诺)TypeError:无法读取属性

提问于
浏览
1

我有两个文本框,一个用于用户名,另一个用于密码 .

<input type="text" id="username">
<input type="text" id="password">
<input type="button" value="Login" onclick="authenticateUser()">

这是firebase代码:

function authenticateUser() {
  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;

  database.ref('users/'+username).once('value').then(function(snapshot) {
    var email = snapshot.val().email;
    console.log(email);
  });
}

它说:

Uncaught(承诺)TypeError:无法读取null的属性'email'

如果用户名匹配,上面的firebase代码可以工作并获取电子邮件,但如果用户名不存在,如果没有,那么它会抛出TypeError,如何捕获该错误?

遗憾的是,这不起作用:

function authenticateUser() {
  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;

  database.ref('users/'+username).once('value').then(function(snapshot) {
    var email = snapshot.val().email;
    console.log(email);
  }, function(error) {
    console.log('Invalid Username');
  });
}

如果是电子邮件和密码验证,则有 catch

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // ...
});

在Java中,有类似的东西

catch(TypeError error) {
    //Do whatever you want to do
}

1 回答

相关问题