最佳实践:嵌套订阅以接收用户数据



我正在使用Firebase作为后端开发一个离子2移动应用。使用Firebase,一些身份验证数据会自动存储使用Firebase(目前登录用户的ID,电子邮件和密码)。其他用户数据(名称,地址,...)存储在我的Firebase数据库中。

要获取当前登录的用户数据,我必须首先订阅Firebase的Auth Methode。使用AngularFire2我执行以下操作:

this.af.auth.subscribe(data => {
  ... // data.uid gives me the user's id
}

现在我知道用户的ID,可以订阅我的firebase数据库,以通过以下方式获取其他用户数据。

this.af.database.object('/users/'+userId).subscribe( userData => {
   ...
}

如果我将两者都结合在一起,则是这样的嵌套订阅:

this.af.auth.subscribe(data => {
   this.af.database.object('/users/'+user.uid).subscribe( userData => {
       ...
   }
}

这有效,但是,拥有两个嵌套订阅并不正确。你们如何处理这个?这里是什么"最佳练习方法"?

这可以由RXJS MERGEMAP操作员

完成
this.af.auth.subscribe(user=> {
   this.af.database.object('/users/'+user.uid).subscribe( userData => {
       ...
   }
}

to

this.af.auth.mergeMap(user=>this.af.database.object('/users/'+user.uid))
    .subscribe(userData){
        ...
    }

要回答您的问题,Mergemap用于避免嵌套订阅,其余的内容是您的应用特定逻辑。

相关内容

  • 没有找到相关文章