我尝试使用教程和视频来解决这个问题,但无法使其发挥作用。我的 Firebase 实时数据库有一个名为“用户”的表。用户表中有两个字段 - 用户 ID 和名字。
我想检索记录的firstName字段值,其中UserId =当前登录用户的uid。这是我的代码:
//monitoring authchanges
onAuthStateChanged(auth, async (user) => {
if (user) {
const uid = user.uid;
const firstname = await getFirstnameOfLoggedInUser();
if (firstname) {
welcomeTxt.textContent = "Welcome back, " + firstname + "!";
} else {
// Handle case where firstname retrieval fails (optional)
}
} else {
console.log("user is logged out");
welcomeTxt.textContent = "Welcome! Please sign in or create an account.";
}
});
//get FirstName of person logged in
async function getFirstnameOfLoggedInUser() {
const user = auth.currentUser;
console.log(user);
if (user) {
const uid = user.uid;
console.log(uid);
const userRef = ref(database, "users/" + uid);
console.log(userRef);
get(userRef, (snapshot) => {
const userdata = snapshot.val().firstName;
console.log(userdata);
});
}
}
此代码正确记录当前 uid,但即使我看到 UserId 和 uid 匹配,也不会检索用户表中的正确记录。请帮忙!
您需要使用查询根据 UID 获取具有正确名字的用户。比如:
const usersRef = ref(database, "users");
const userQuery = query(usersRef, orderByChild("UserId"), equalTo(uid));
get(userQuery, (snapshot) => {
snapshot.forEach((userSnapshot) => {
const userdata = userSnapshot.val().firstName;
console.log(userdata);
});
});
另请参阅有关排序和过滤数据的 Firebase 文档。