0

我有2個文本框,一個用於用戶名,另一個用於密碼。Firebase - 未捕獲(承諾中)類型錯誤:無法讀取屬性

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

這裏是火力代碼:

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 (in promise) TypeError: Cannot read property 'email' of null

上面的代碼工作,如果用戶名匹配獲取的電子郵件,但如果用戶名沒有什麼存在,如果它不那麼會引發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 
} 

回答

相關問題