Firebase无法读取null的属性“ uid”

时间:2020-06-27 08:26:32

标签: javascript google-cloud-firestore firebase-authentication

由于某些原因,firebase无法读取属性UID。任何帮助将不胜感激!我应该首先改变从firebase.auth获取数据的方式吗?最终目标是使用用户UID的ID更新Firestore数据库文件。

    // Add additional info to user account
const completeAccountform = document.querySelector('#wf-form-completeAccount');
document.getElementById("completeButton").addEventListener('click', addAccountinfo);

function addAccountinfo() {
    // get new account data
    const firstName = completeAccountform['firstName'].value;
    const lastName = completeAccountform['lastName'].value;
    const location = completeAccountform['location'].value;

    const db = firebase.firestore();
    firebase.auth().currentUser.uid;
        db.collection('users').doc(user.uid).set({
            email: signupForm['signupEmail'].value,
            firstname: completeAccountform['firstName'].value,
            lastname: completeAccountform['lastName'].value,
            location: completeAccountform['location'].value
    }).then(function(docRef) {
        modalContainer.style.display = 'none'
        console.log("Document updated with ID: ", docRef.id);
    })
    .catch(function(error) {
        console.error("Error updating document: ", error);
    });

    form.reset()
};

1 个答案:

答案 0 :(得分:0)

我建议您按照Firebase docs的建议重新获取当前指定的用户:

获取当前用户的推荐方法是设置观察者 在Auth对象上:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

通过使用观察者,您可以确保Auth对象不在 获得当前状态时的中间状态(例如初始化) 用户。当您使用signInWithRedirect时,onAuthStateChanged观察者 等到getRedirectResult解析后再触发。

我建议您使用观察器,因为有时auth对象尚未完成初始化,并且它为null(这时将出现此错误)。这取决于您的Auth流程以及哪种情况更适合您的用户情况