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

Angular 从Firebase实时数据库返回对象值,angular,firebase,angularfire,angularfire2,Angular,Firebase,Angularfire,Angularfire2,我在Firebase中有一个对象(用户)列表。 每个对象都是这样的: 我想为用户获得“禁止”值 现在我的func看起来像这样: isBanned() { return this.db.object(`users/${this.authState.uid}/banned`) } 它什么也不回。我应该如何正确地写这个 我用的是Angular5和AngularFire2 谢谢您的帮助。在启动此函数时,您的.onAuthStateChanged异步方法可能尚未解决。通过控制台从该函数

我在Firebase中有一个对象(用户)列表。 每个对象都是这样的:

我想为用户获得“禁止”值

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

  isBanned() {
    return this.db.object(`users/${this.authState.uid}/banned`)
  }
它什么也不回。我应该如何正确地写这个

我用的是Angular5和AngularFire2


谢谢您的帮助。

在启动此函数时,您的
.onAuthStateChanged
异步方法可能尚未解决。通过控制台从该函数中取出
${this.authState.uid}
来尝试查看。如果是
null
,那就是你的问题(asnych问题)


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

可能在触发此函数时,您的
.onAuthStateChanged
异步方法未得到解决。通过控制台从该函数中取出
${this.authState.uid}
来尝试查看。如果是
null
,那就是你的问题(asnych问题)


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

问题的核心是authState是异步的。我建议您将其重写为AngularFireAuth的authState映射的可观察对象:

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

问题的核心是authState是异步的。我建议您将其重写为AngularFireAuth的authState映射的可观察对象:

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