FirebaseListObservable становится Observable после запроса

Я сделал небольшое приложение на FireBase. Я использовал тип, предоставленный angularfire, называемый FirebaseListObservable, который позволяет вам наблюдать за изменениями в ваших данных. Проблема, с которой я столкнулся, заключается в том, что Angularfire также предоставляет способ запроса данных, прикрепляя / передавая объект запроса к запросу.

Следующее возвращает FirebaseListObservable.

this.resources$ = <FirebaseListObservable<IResource[]>> this.af.list(`/resources/${this.auth.id}`) as FirebaseListObservable<IResource[]>;

// Это возвращает обычную наблюдаемую.

this.resources$ = <FirebaseListObservable<IResource[]>> this.af.list(`/resources/${this.auth.id}`,
  {
    query: {
      orderByChild: `${property}`
    }
  }
) as FirebaseListObservable<IResource[]>;

Но это возвращает простую старую наблюдаемую. Проблема в том, что мне нужен FirebaseListObservable, потому что он добавил функциональность CRUD, и я пытаюсь написать простые методы фильтрации / сортировки.

Я вижу, у них естьОткрытый вопрос для этого, но я надеюсь, что есть способ обойти эту проблему раньше, чем позже. Решение, обсуждаемое в заявке, описывает расширение FirebaseListObservable и переопределение метода lift для возврата настраиваемой наблюдаемой. Я попытался создать CustomFirebaseListObservable, который делает именно это, но у меня, кажется, нет доступа к правильным свойствам (observable.source и observable.operator из моей настраиваемой наблюдаемой. Я надеюсь, что способ привести наблюдаемое к a firebaseListObservable. Любой обходной путь будет действительно.

 Rob Gorman18 сент. 2016 г., 22:38
Вы когда-нибудь находили обходной путь для этого? У меня точно такой же вопрос.

Ответы на вопрос(1)

может быть, вы можете создать ссылку на базу данных с упорядочением и затем передать ее в angularfire?

let refPath = `/resources/${this.auth.id}`,
    ref = firebase.database().ref(refPath).orderByChild(property);
this.resources$ = <FirebaseListObservable<IResource[]>>this.af.list(ref);

Ваш ответ на вопрос