Я использую Cloud Firestore, и когда я добавляю документ в одну из своих корневых коллекций и регистрирую результат snapshotChanges()
в этой коллекции, журнал показывает каждый документ в этой коллекции.
Я понимаю, что плата за Firebase основана на возвращенных документах, например, в запросе.
Вызывает ли snapshotChanges()
также оплачиваемое чтение для каждого документа?
firebase.service.ts
@Injectable()
export class FirebaseService {
public recordsCollection: AngularFirestoreCollection<any[]>;
public records$: Observable<any[]>;
public financialsCollection: AngularFirestoreCollection<any[]>;
public financials$: Observable<any[]>;
constructor(private db: AngularFirestore) {
this.recordsCollection = this.db.collection<any[]>('records');
this.records$ = this.mapAndReplayCollection(this.recordsCollection);
this.financialsCollection = this.db.collection<any[]>('financials');
this.financials$ = this.mapAndReplayCollection(this.financialsCollection);
}
private mapAndReplayCollection(collection: AngularFirestoreCollection<any[]>): any {
return collection.snapshotChanges()
.pipe(
map(changes => {
return changes.map(a => {
console.log(`${collection.ref.id} snapshotChanges: ${a.payload.doc.id}`);
return { realId: a.payload.doc.id, ...a.payload.doc.data() }
})
}),
shareReplay(1),
);
}
}