从Firebase实时数据库返回对象值

时间:2018-03-23 20:45:14

标签: angular firebase angularfire angularfire2

我在Firebase中有一个对象(用户)列表。 每个对象看起来像这样: enter image description here

我想让用户获得“禁止”价值。

现在我的func看起来像这样:

  isBanned() {
    return this.db.object(`users/${this.authState.uid}/banned`)
  }

它什么也没有回报。我该怎么写这个呢?

我正在使用angular 5和AngularFire2。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

当此函数被触发时,您的.onAuthStateChanged异步方法可能无法解决。尝试通过控制台查看该功能中的${this.authState.uid}。如果它null是你的问题(asnych问题)

假设您确实拥有uid,请尝试获取整个父节点,然后snap.val().banned

答案 1 :(得分:1)

问题的核心是authState是异步的。我建议你把它重写为一个从AngularFireAuth' authState映射的Observable:

this.isBanned$ = this.afAuth.authState.switchMap(u => u ? this.db.object(`users/${u.id}/banned`).valueChanges() : Observable.of(undefined))