显示来自Firebase数据库(Web)的当前用户数据

问题描述 投票:0回答:1

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')


感谢您阅读本文,祝您有美好的一天!

javascript firebase-realtime-database firebase-authentication
1个回答
0
投票

您尚未将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需要匹配您要显示的数据库中用户节点的任何属性

© www.soinside.com 2019 - 2024. All rights reserved.