【问题标题】:Add data to firebase and redirect to other page simultaneously将数据添加到 firebase 并同时重定向到其他页面
【发布时间】:2018-07-18 17:25:12
【问题描述】:

我正在使用 Firebase 创建一个具有登录/注册功能的网站,问题是当用户创建一个新帐户时,我想将他重定向到主页并将他的名字放在 firebase数据库同时进行。用户被重定向到主页,我无法将数据添加到 firebase 数据库

请检查我的代码

signUp.addEventListener('click',() => {

const emailValue = emailField.value;
const passValue = passField.value;

if(emailValue === "" && passValue === "" || emailValue !== "" && passValue    == "" || emailValue == "" && passValue !== "") 
{
    alert('Please fill all fields')
}
else {
    const auth = firebase.auth();
    const promise = auth.createUserWithEmailAndPassword(emailValue,passValue);
    promise
    .then(() => {
        auth.signInWithEmailAndPassword(emailValue,passValue);
        let userId = auth.currentUser.uid;
        let dataRef = firebase.database().ref('users/' + userId);
        dataRef.set({
            name: nameField.value
        });
        console.log('User Signed In');
        return './homepage.html';
    })
    .then((address) => {
        window.location.href = address;
    })
    .catch(e => {
    console.log(e.message);
    })

}

});

提前致谢:)

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    createUserWithEmailAndPassword 返回user object,因此无需重新验证凭据。请试试这个:

    signUp.addEventListener('click', () => {
      const emailValue = emailField.value;
      const passValue = passField.value;
      if (emailValue === "" && passValue === "" || emailValue !== "" && passValue == "" || emailValue == "" && passValue !== "") {
        alert('Please fill all fields')
      } else {
        firebase.auth().createUserWithEmailAndPassword(emailValue, passValue).then(function (user) {
          const user_data = {
            wo: 0
          };
          const promise = firebase.app().database().ref(`/users/${user.uid}`).set(user_data);
          promise.then(() => {
            setTimeout(1000);
            window.location.href = './homepage.html';
          });
        }, function (error) {
          var errorCode = error.code;
          var errorMessage = error.message;
          console.log(errorMessage);
        });
      }
    });
    

    【讨论】:

    • 我以为它包含在问题中,刚刚删除;)
    • 另外,添加关于您更改/添加的内容以及为什么会有所帮助的说明会很有用。
    • @AndréKool 刚刚添加了描述,感谢 cmets
    • 非常感谢@d.mares 的回答,只需稍微更改您的代码即可const userId = firebase.auth().currentUser.uid; const promise = firebase.app().database().ref(/users/${userId}).set(user_data);${user.uid} 在您的代码中导致在 firebase 数据库中未定义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2012-03-16
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多