【问题标题】:Firebase Realtime Database Connection Data - WebFirebase 实时数据库连接数据 - 网络
【发布时间】:2018-09-05 13:02:05
【问题描述】:

我必须显示属于登录用户的数据。

我的数据库结构如下:

用户/驱动程序/Uid/姓名、电话... 如何以文本形式显示使用 JavaScript 登录的用户的数据?

<a> Username </a>

【问题讨论】:

    标签: javascript html firebase dom firebase-realtime-database


    【解决方案1】:

    如果你有这个 HTML:

    <a id="username"> Username </a>
    

    还有这个数据库结构:

    Users
      Drivers
        Uid: { name: "Name", phone: "Phone number" }
    

    然后你可以显示当前用户的名字:

    var currentUser = firebase.auth().currentUser;
    var userRef = firebase.database().ref("Users/Drivers").child(currentUser.uid);
    userRef.on("value", function(snapshot) {
      document.getElementById("username").innerText = snapshot.val().name;
    })
    

    所以这段代码(逐行):

    1. 确定当前用户
    2. 在数据库中创建对该用户数据的引用
    3. 开始侦听该数据,这意味着它会加载当前数据,然后监视任何更改
    4. 将用户名放入元素中。

    将立即调用第 4 行,使用用户的当前值,然后每次用户数据更改时。

    另请参阅 listening for values 上的 Firebase 文档。

    如果页面也可以在用户未登录(尚未)时加载,您需要确保仅在用户登录时运行此代码。您可以这是通过使用所谓的身份验证状态更改侦听器来实现的,每当用户的身份验证状态更改时都会调用该侦听器:

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        var userRef = firebase.database().ref("Users/Drivers").child(user.uid);
        userRef.on("value", function(snapshot) {
          document.getElementById("username").innerText = snapshot.val().name;
        })
      }
    });
    

    请参阅 getting the current signed in user.. 上的 Firebase 文档。

    【讨论】:

    • 我收到一个错误:未捕获的类型错误:无法读取 null 的属性 'uid'
    • 这意味着用户没有登录。我为此添加了一个示例。在这一点上,我建议您花一些时间阅读 Firebase 文档,并且一定要使用 codelab for web developers,因为它涵盖了您遇到的所有代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2021-07-28
    • 2021-11-29
    • 1970-01-01
    • 2018-08-21
    • 2021-09-09
    • 2021-02-06
    相关资源
    最近更新 更多