В приведенном ниже коде я получаю длину коллекции, наблюдаемую из Firestore.
getUserCartLength(uid:string){
return this.db.collection('users/'+uid+'/cart').valueChanges()
.pipe(
map(docs=>{return docs.length})
)
}
И этот метод доступен через @ ngrx / effect следующим образом
@Effect()
userExist$ = this.actions$.ofType(UserAuthTypes.YES_USER_EXIST).pipe(
map((action:YesUserExist)=>action.user),
switchMap((user)=>{
return this.userService.getUserCartLength(user.uid)
.pipe(
map(length=>{
console.log(length);
return new InitializeUserCart(length);
})
)
}),
)
А в компоненте я использую метод store для отправки действий после проверки, существует пользователь или нет
ngOnInit() {
this.logService.isUserExist().subscribe(user=>{
if(user) this.store.dispatch(new fromUser.YesUserExist(user));
else this.store.dispatch(new fromUser.NoUser());
})
}
все работает нормально, пока пользователь вошел в систему. Когда пользователь выходит из системы, он выдает ошибку, как показано ниже
core.js:1673 ERROR Error: Missing or insufficient permissions.
Насколько я понимаю об этой ошибке, конвейер все еще пытается получить доступ к базе данных
Есть ли способ закрыть работу канала в ngrx / Effects или любым другим способом, пожалуйста, помогите мне!