我刚刚得到了登录工作在我的应用程序,现在直接在我试图拉出文档的用户,所以我可以显示他们的名字在页面上。
email = loginemail.value;
password = loginpassword.value;
signInWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
// Signed in
alert("Thanks for signing in!");
const user = userCredential.user;
useremail.innerHTML = user.uid;
// ...
})
.catch((error) => {
const errorCodelogin = error.code;
const errorMessagelogin = error.message;
createUserWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
alert("Looks like you're a new user - we created a new account for you!");
const user = userCredential.user;
// ...
})
.catch((error2) => {
const errorCoderegister = error2.code;
const errorMessageregister = error2.message;
pagebody.innerHTML = errorMessagelogin + "<br /><br />" + errorMessageregister;
});
});
const docRef = doc(db, "users", useremail.innerHTML);
const docSnap = await getDoc(docRef);
if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
const docRef的最后一部分直接来自Firebase的文档,我只是替换了我的表名和文档ID。
它在控制台中触发此错误:
未捕获(承诺中)Firebase错误:文档引用无效。文档引用必须具有偶数个段,但用户只有1个。
1条答案
按热度按时间mzsu5hc01#
尝试加载文档的代码在登录完成之前运行。
为了防止这种情况,请使用
await
而不是then()
来返回结果。一般来说:在你熟悉异步行为之前,不要在你的代码中混合使用
await
和then,在那之前,使用其中一个,而不是两个都用。