У меня есть 3 параллельных огня. И мне нужно присоединиться к ним как к одному объекту. Код, как показано ниже:Как объединить 3 наблюдателя базы данных без потери динамических обновлений
import {Http} from "@angular/http";
import {AngularFireDatabase} from "angularfire2";
import {Thread} from "../model/thread";
import {Message} from "../model/message";
import {Participant} from "../model/participant";
constructor(private http: Http, private db:AngularFireDatabase) { }
loadUserThreads(uid): Observable<AllUserData> {
return Observable.forkJoin([
this.db.list('participant/' + uid + '/threads').first(),
this.db.list('participant/' + uid + '/messages').first(),
this.db.list('participant/' + uid + '/participants').first()
])
.map((data:any[]) => {
let threads: Thread[] = data[0];
let messages: Message[] = data[1];
let participants: Participant[] = data[2];
let AllUserData = {
threads: threads,
messages: messages,
participants: participants
}
return AllUserData;
})
}
Эта работа и возвращает точный формат, мне нужно, что с этим интерфейсом:
export interface AllUserData {
participants: Participant[];
threads: Thread[];
messages: Message[];
}
Проблема в том forkJoin не будет работать без .Первый() все firebase наблюдаемые. И если я использую .first(), чтобы завершить все наблюдаемые базы данных, я ПОТЕРЯЛ динамические обновления, из-за которых я использую firebase на первом месте. Как я могу получить лучшее от мира? - Сохраняйте наблюдаемые данные о бомбе, но можете присоединиться к ним, как мой формат интерфейса? Я тяну свои волосы на этом. Любая помощь будет оценена!
Ха-ха! Это снова @olsn, вот день! Огромное спасибо. Да, но просто переключитесь на работу combLatest ... Интересно, будет ли порядок изменения массива зависеть от того, какие наблюдаемые испускают в первую очередь? Я читал где-то forkJoin сохранить порядок разных наблюдаемых и combLatest нет? –
Заказ должен всегда оставаться неизменным с combLatest, так же как forkJoin – olsn
@olsn боролся с этим на некоторое время, спасибо – Roy