使用电子邮件和密码创建用户,返回值未定义的非空用户

Create user with email and password returns non null user with undefined values

本文关键字:用户 未定义 返回值 电子邮件 密码 创建      更新时间:2023-09-26

我有以下代码;它成功地创建了用户并返回了一个承诺。根据文档,它在完成后返回一个非空用户,然而,当我试图打印出电子邮件或发送验证电子邮件时,我得到"未定义"answers"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();
      
    }  
    
}

任何想法?

这不是访问承诺的方式。我不太熟悉底层Firebase代码,但假设他们使用的是A+兼容的承诺解决方案,那么应该有一个积极的对应的.catch()方法。典型的是.then()

这意味着你需要等到promise 解析了之后才能访问它返回的内容。

你可以这样做,而不是promise.email

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

我还认为,如果您抛弃整个promise变量,可能会使它更容易。并执行如下操作…

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;
    // ...
  });

那么在我看来,情况会更明显一些。

我建议在www.promisejs.org

查看更多的承诺。