Возврат окончательного наблюдаемого из вложенного блока - PullRequest
1 голос
/ 29 мая 2019

Привет, ребята. У меня есть следующий код:

return this.facebook.getFacebookUserInfos(req.token).pipe(
      switchMap(user => {
            return this._repo.findBy({email: user.email}).pipe(
              switchMap(foundUser => {
                // assume foundUser is always null 
                if (!foundUser) {
                  const fromFacebook = this.createUserModel(user, event.queryStringParameters);
                 return this._repo.save(fromFacebook);
                }
                return of(foundUser);
              }));
          }),
          switchMap(user => {
            return this.getAuthToken(user)
          }),
          map(response => Response.ok(response.body, response.headers)),
          catchError((err) => of(Response.errorResponse(err)))
        );

Я застрял, как он это называет.поменять карту с другой наблюдаемой.Как я могу заставить блок ждать результата this._repo.save (от Facebook), прежде чем перейти к следующему?метод save также возвращает наблюдаемое.Заранее спасибо за помощь.Приветствия

1 Ответ

0 голосов
/ 29 мая 2019

Попробуйте приведенный ниже фрагмент кода.

return this.facebook.getFacebookUserInfos(req.token).pipe(
      switchMap(user => {
            return this._repo.findBy({email: user.email}).pipe(
              switchMap(foundUser => {
                // assume foundUser is always null 
                if (!foundUser) {
                  const fromFacebook = this.createUserModel(user, event.queryStringParameters);
                 return this._repo.save(fromFacebook);
                } else {                
                 return of(foundUser);
                }
              }));
          }),
          concatMap(user => {
            return this.getAuthToken(user)
          }),
          map(response => Response.ok(response.body, response.headers)),
          catchError((err) => of(Response.errorResponse(err)))
        );
...