@missbells

Как получить информацию из Firebase без subscribe?

У меня такая ситуация, что один Observable<User> находится внутри другого Observable<Params[]>, из-за чего мне приходится использовать вложенные друг в друга Observable.subscribe.

Мне нужно получить в качестве обьекта одного конкретного юзера из базы, у которого айди соответсвует параметру роута.

Подскажите, пожалуйста, как можно избежать сложившейся ситуации и получить информация из Firebase без подписки? Потому что по сути, мне не надо подписываться на этого юзера. Мне просто нужно получить данные о нем для отображения на форме. Такое вообще возможно?

Если нет, то как тогда можно избежать вложенных подписок, потому что где-то сталкивалась с мнением, что вложенные subscribes это не очень хорошо...

Работаю с AngularFire 5

export class UserAddEditComponent implements OnInit {

  userForm: FormGroup;
  userId: string;

  constructor(private route: ActivatedRoute, private usersService: UsersService) { }

  ngOnInit() {
    this.route.params.subscribe((params: Params) => {
      if (params['id']) {
        this.userId = params['id'];
        this.usersService.getUser(this.userId).subscribe((user) => {
          this.initForm(user);
        });
      } else {
        this.initForm();
      }
    });
  }


Метод getUser() сервиса UsersService возвращает Observable<User>

getUser (id: string): Observable<User> {
    return this.firebase.doc<User>(`users/${id}`).valueChanges();
  }
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
streetflush
@streetflush
https://angular.io/guide/router

ngOnInit() {
  this.hero$ = this.route.paramMap.pipe(
    switchMap((params: ParamMap) =>
      this.service.getHero(params.get('id')))
  );
}


Все предельно прозрачно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы