我有一个关于使用angularFire2访问用户数据的一般问题。这可能只是关于使用可观察或承诺的问题。
Firebase文档建议访问用户数据,如下所示:
console.log( firebase.auth().currentUser ) //retrieved user data
以上效果很好,但在v4.0的angularFire2文档中,建议使用 afAuth.authState
this.afAuth.authState.subscribe(auth => console.log( auth ) ) //retrieved data in observable
任何建议或解释都会很棒。我意识到observable绑定到新数据,但是如果我想在多个地方访问observable可以通过我的应用程序进行多次订阅吗?或者更好的方法是使用firebase.auth重新查询数据( )什么时候需要。此外,嵌套订阅的订阅开始变得非常复杂,仅使用firebase.auth()。currentUser并防止嵌套订阅会更好吗?
this.afAuth.authState.subscribe(auth => {
if(auth)
this.uid = auth.uid;
this.userProfileRef = db.object('/users/'+auth.uid,{ preserveSnapshot: true });
this.userProfileRef.subscribe(snapshot => {
console.log(snapshot.val() ); //ugh complexity
});
}
});
或
this.uid = firebase.auth().currentUser.uid;
this.userProfileRef = db.object('/users/'+auth.uid,{ preserveSnapshot: true });
this.userProfileRef.subscribe(snapshot => {
console.log(snapshot.val() );
});