У меня есть функциональное приложение, в котором провайдер берет данные из assets / data / data.json
Я хочу переместить data.json в firebase, и всякий раз, когда пользователь входит в систему / обновляется, я хочу обновитьdata.json с данными из Firebase (целое дерево, оно не очень большое).Причина в том, что я хочу использовать один и тот же код провайдера без каких-либо изменений:
@Injectable()
export class ConferenceData {
data: any;
constructor(public http: Http, public user: UserData) { }
load(): any {
if (this.data) {
return Observable.of(this.data);
}
else {
return this.http.get('listRef')
.map(this.processData, this);
}
}
processData(data: any) {
this.data = data.json();
this.data.tracks = [];
this.data.schedule.forEach((day: any) => {
day.groups.forEach((group: any) => {
group.sessions.forEach((session: any) => {
session.speakers = [];
if (session.speakerNames) {
session.speakerNames.forEach((speakerName: any) => {
let speaker = this.data.speakers.find((s: any) => s.name === speakerName);
if (speaker) {
session.speakers.push(speaker);
speaker.sessions = speaker.sessions || [];
speaker.sessions.push(session);
}
});
}
if (session.tracks) {
session.tracks.forEach((track: any) => {
if (this.data.tracks.indexOf(track) < 0) {
this.data.tracks.push(track);
}
});
}
});
});
});
return this.data;
}
и, в основном, сохранить все остальное без изменений (за исключением импорта библиотек Firebase и обновления data.json).
Есть ли способ сделать это?