Тип Observable <{} []> не может быть преобразован в тип AngularFireList' - PullRequest
0 голосов
/ 01 июня 2018

Я довольно плохо знаком с Firebase, и я проходил этот курс: https://scotch.io/tutorials/build-a-status-update-app-w-reactions-using-angular-v4-and-firebase, но моя проблема в том, что это руководство устарело, поэтому я столкнулся с некоторыми проблемами с Firebase

В учебнике есть недавняя функция, которая использовалась для получения самых последних сообщений ... ранее код выглядел так:

// ----------------------------------------------------------------------
// Method to get the recent statuses from Firebase
// ----------------------------------------------------------------------

recent(amount: number): FirebaseListObservable<any[]> {
  return this.statuses = this.af.list('/statuses').map(arr => arr.reverse()) as FirebaseListObservable<any[]>;
}

Позже я обнаружил, что FirebaseListObservable устарел, и теперьэто AngularFireList

Поэтому я изменил свой код, чтобы он выглядел следующим образом

recent(amount: number): AngularFireList<any[]> {
  return this.statuses = this.af.list('/statuses').map(arr => arr.reverse()) as AngularFireList<any[]>;
}

Я использовал аналогичный вопрос из Свойство 'map' не существует для типа 'AngularFireList <{}> ' и попытался изменить мой код на:

recent(amount: number): AngularFireList<any[]> {
  return this.statuses = this.af.list('/statuses').valueChanges().map(arr => arr.reverse()) as AngularFireList<any[]>;
}

Type 'Observable<{}[]>' cannot be converted to type 'AngularFireList<any[]>'.

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 01 июня 2018

Вы хотели бы использовать map() как конвейерный оператор с RxJS 5.5+.Это позволит вам перевернуть массив, возвращенный из .list().После этого вы сможете просто напечатать его как Observable<YourMagicType[]>:

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

recent(amount: number): Observable<YourMagicType[]> {
  return this.af.list<YourMagicType>('/statuses').valueChanges().pipe(
    map(arr => arr.reverse())
  );
}

Надеюсь, это поможет!

...