2016-10-21 16 views
0

我有以下代碼;它成功創建用戶並返回一個承諾。根據該文件,則返回完成後,一個非空的用戶,但是,正如我嘗試打印出來的電子郵件或發送一封確認郵件,我得到「未定義」和「sendVerificationEmail是不是一個函數」使用電子郵件和密碼創建用戶返回非空值用戶,具有未定義值

function register(){ 
 
    var email = document.getElementById('email').value; 
 
    var password = document.getElementById('pass').value; 
 
    
 
    var promise = firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
 
      // Handle Errors here. 
 
      var errorCode = error.code; 
 
      var errorMessage = error.message; 
 
      // ... 
 
     }); 
 
     
 
    if(promise != null){ 
 
     alert(promise.email); 
 
     promise.sendEmailVerification(); 
 
     
 
    } 
 
    
 
}

有什麼想法嗎?

+0

http://stackoverflow.com/questions/37431128/firebase-confirmation-email-not-being-sent 這個線程可以幫助我認爲在使用sendemailverification api調用之前需要訪問api。 – rob

回答

0

這不是你如何獲得承諾。我並不熟悉底層的Firebase代碼,但假設他們使用的是符合A +標準的承諾解決方案,那麼應採用.catch()方法的正面對應方法。它通常是.then()

所以這意味着你需要等到承諾解決才能訪問它返回的內容。

因此,而不是promise.email你會做這樣的事情。

promise.then(function(rsp) { 
    window.alert(rsp); 
}); 

我也認爲這可能會讓你更容易,如果你是溝渠整個承諾變量。而這樣做的以下...

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

那麼這將是一個有點明顯是怎麼回事IMO。

我會建議尋找到的承諾多一點在這裏www.promisejs.org

相關問題