ионный код 3 angularfire2 в код ионного кода 4 angularfire2 - PullRequest
0 голосов
/ 26 ноября 2018

у меня есть мой код с ionic 3 angular 5, работающий как показано ниже

getUser(uid:string){
    console.log('start of getUser with uid:' + uid)
    return new Promise((resolve, reject) =>
      {
        this.db.object("/users/" + uid).snapshotChanges().map(
          (snapshot) => {return snapshot.payload.val()}
        ).subscribe(
          res => {
            console.log('response:' + res)
            resolve(res)
          },
          err => {
            console.log(err)
            reject(err)
          }
        )
      })
  }

, однако, с ionic 4 .map больше не работает.как мне конвертировать этот код?

1 Ответ

0 голосов
/ 26 ноября 2018

Так же, как вы можете видеть здесь

Начиная с версии 5.5 мы поставили «конвейерные операторы», к которым можно обращаться в rxjs / operator (обратите внимание на множественные «операторы»«).Предполагается, что это лучший подход для добавления только тех операторов, которые вам нужны, чем операторы "patch", найденные в пакете rxjs-compat.

ПРИМЕЧАНИЕ : Использование операторов rxjs или rxjs / безвнесение изменений в ваш процесс сборки может привести к увеличению пакетовно на всякий случай, если вы хотите, чтобы ваш метод getUser() возвращал обещание, вы также можете использовать операторы RXJS (вместо создания и разрешения обещания), например:

// RxJS
import { map } from 'rxjs/operators/map';
import { tap } from 'rxjs/operators/tap';   

// ...

public getUser(uid: string): Promise<any> {
    console.log('start of getUser with uid:' + uid)

    return this.db
        .object("/users/" + uid)
        .snapshotChanges()
        .pipe(
            map((snapshot) => {
                return snapshot.payload.val();
            }),
            tap((response) => {
                console.log('response:' + response);
            })
        )
        .toPromise()
}
...