【问题标题】:Retrieve data from Firebase database in JavaScript用 JavaScript 从 Firebase 数据库中检索数据
【发布时间】:2016-06-09 05:34:50
【问题描述】:

我是 Firebase 的新手,我正在尝试弄清楚如何从我的 Firebase 数据库中检索数据。我能够根据用户的唯一 ID (uid) 成功添加到它,但现在从中获取数据似乎非常困难。我想从当前用户(以下代码中的“用户”)中获取名字,但这个 JavaScript 似乎不起作用:

var uid = user.uid
firebase.database().ref('users/' + uid).on('value', function(snapshot) {
    this.first_name = snapshot.val().first_name;
});

我一拨打this.first_name,就会出现以下错误:

FIREBASE 警告:用户回调引发了异常。 TypeError:无法将属性“first_name”设置为 null。

如果有帮助,我的数据库结构如下:

{
  users: {
    "uid1": {
      first_name: "John"
    },
    "uid2": {
      first_name: "Sue"
    }
  }
}

【问题讨论】:

  • 您为this.first_name 赋值。你期望this 是什么?由于您处于回调链的中间,this 上下文可能是多种事物(包括 null)。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

使用var first_name 代替this.first_name。它应该可以工作。

var uid = user.uid
firebase.database().ref('users/' + uid).on('value', function(snapshot) {
    var first_name = snapshot.val().first_name;
});

【讨论】:

  • 非常感谢,成功了!但是,我之前使用的是this.first_name,因为我想在我的 HTML 中显示该信息。有没有办法可以做到这一点?
  • 好的,我想通了。我只是将 innerHTML 设置为first_name
【解决方案2】:

上面的答案是正确的。但是,我想如果您在查询中使用child,它会更具可读性。两者都应该工作。

firebase.database().ref('users').child(uid).on('value', function(snapshot) {
    var first_name = snapshot.val().first_name;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多