У меня есть приложение Angular, подключенное к базе данных Firebase. Приложение будет отображать маркер на картах Google, и цель состоит в том, чтобы оно работало как прогрессивное веб-приложение с автономными возможностями.
Я рассчитывал на AngularFirestore
для обработки автономной части.
Первый тест прошел хорошо, но проблема в том, что когда я импортировал свои реальные данные, я получил chrome, Paused before potential out-of-memory crash
.
Вот мой текущий Сервис, который получает Spots
:
import { Injectable } from '@angular/core';
import * as fromSpots from './spots.reducer';
import { Store } from '@ngrx/store';
import { Subscription } from 'rxjs';
import { AngularFirestore } from '@angular/fire/firestore';
import { map, take } from 'rxjs/operators';
import { Spot } from './spot.model';
import { SetSpots } from './spots.actions';
@Injectable({
providedIn: 'root'
})
export class SpotsService {
private firebaseSubs: Subscription[] = [];
constructor(
private db: AngularFirestore,
private store: Store<fromSpots.State>
) { }
fetchSpots() {
this.firebaseSubs.push(
this.db
.collection('spots')
.snapshotChanges()
.pipe(map(docArray=>{
return docArray.map(doc=>{
return {
id: doc.payload.doc.id,
...doc.payload.doc.data()
} as Spot;
})
})) .subscribe((spots: Spot[])=>{
console.log(spots);
this.store.dispatch(new SetSpots(spots))
},
error =>{
//TODO
console.error(error);
}
)
);
}
}
Я думаю, что во время выполнения карты происходит сбой (потому что я не получаю часть console.error).
Некоторые метрики: ~ 30'000 документов, для общего размера 185 МБ (я знаю, что это много, изначально не думал, что он будет таким большим).
Так что мой вопрос в том, как обрабатывать автономные данные, поступающие из большой базы данных, такой как firebase?