我正在尝试在Firestore中检索包含游戏当前用户(玩家)数据的文档;我可以获取该文档,但是,刷新页面后,firebase.auth().currentUser
就会为空。如果有所不同,将以匿名方式登录用户。我试图改变持久性,似乎没有改变任何东西
在我的gameService.ts文件中:
private getCurrentPlayer(gameId: string){
return this.afs.doc(`games/${gameId}/players/${firebase.auth().currentUser.uid}`);
}
在我的component.ts文件中:
constructor(private gameService: GameService, private route: ActivatedRoute)
{
gameService.currentPlayer.valueChanges().subscribe(user =>{
console.log(user)
this.currentPlayer = user;
});
}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
您必须使用localStorage进行持久性存储:
localStorage.setItem('user', user)
然后,如果要使用用户obj,可以这样做
myUser = localStorage.getItem('user')
答案 1 :(得分:0)
这样写:
return this.angularFireAuth.authState
.pipe(
filter(user => !!user),
switchmap(user => this.afs.doc(`games/${gameId}/players/${user.uid}`));
可观察对象可以在任何时候设置,包括在构造函数中进行设置,但是直到有公认的用户时才会触发,这时它将为您提供该用户想要的文档。