Hello!
我一直在研究一个Web项目,用户可以在该项目中注册并登录。我也想添加一个个人资料,可以在“个人资料”页面上显示他们提供的某些信息。
我已经使用了Firebase身份验证(带有电子邮件和密码)和rt数据库来存储“名称”,“生物”等其他信息,
我似乎不明白的是如何检索存储在数据库中,并在
标签上的display上个人资料页面。
我已经尝试过这里提出的其他问题的解决方案,但似乎没有一个适合我。
这是我的数据库的外观:
users:
|
+-uid1
|
+-Name
|
+-Gender..
|
+-uid2
|
+-Name
|
+-Gender..
这里是个人资料页面的一些代码:
我在这里试图做的是获取当前登录的用户并在配置文件上显示名称-在具有id = username的
标记上。
//getting reference to the apps
const auth = firebase.auth();
const database = firebase.database();
//also creating table 'users' on database
const rootRef = database.ref('users');
// ------------------------------------//
//Check if signed in
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
database.ref('/users/'+ userId).on('value')
.then(function(snapshot) {
var snapVal = snapshot.val();
displayName.innerHTML = snapVal.Name
var name = diplayName
document.getElementById("username").innerHTML = "Welcome: " + name + "!";
})
} else {
// No user is signed in.
window.location = "login.html"
}
});
当我测试代码时,我在控制台上收到此错误:
Error: Query.on failed: Was called with 1 argument. Expects at least 2.
而且,我真的不知道我是否正确使用了此功能。
我应该用其他内容代替'userId'吗?
database.ref('/ users /'+ userId)。on('value')
感谢您阅读本文,祝您有美好的一天!
您尚未将userId
设置为任何值。当您的onAuthStateChanged
回调函数被调用并且user
有一个值时,您就知道一个用户已登录。此时,您可以通过执行user.uid
来获取该用户的UID。
所以类似:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
database.ref('/users/'+ user.uid).once('value')
.then(function(snaphot) {
document.getElementById("username").innerText = "Welcome: " + snapshot.val().Name;
})
} else {
window.location = "login.html"
}
});
Name
中的snapshot.val().Name
需要匹配您要显示的数据库中用户节点的任何属性