由于某些原因,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()
};
答案 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流程以及哪种情况更适合您的用户情况