У меня есть веб-приложение, разработанное с использованием angular 6 и google-clod-firestore, которое принимает заказ от клиента на доставку книг; в настоящее время оно состоит из двух компонентов
- CRM-компонент
- Компонент размещения заказа
, когда клиент делает звонок, он появится в CRM и перенаправит на страницу размещения заказа. После успешного размещения заказа он снова будет перенаправлен на страницу CRM.
Компонент размещения заказа покажет все доступные книги, которые поступают из коллекции с именем «books», размером 1000;
, поэтому каждый раз, когда попадает на страницу размещения заказа, он читает 1000 документов, которыеВозникает значительная стоимость. Мой вопрос: Как я могу уменьшить это чтение. Можно ли ограничить операцию чтения один раз .?
В настоящее время я реализовал логику, используя shareReplay и службу singleton, я не знаю, является ли онаправильная реализация;
Вот код
SingeltonService.ts
-------------------------
export class SingeltonService {
source: Observable<any>;
aa: any;
bb: any;
constructor(private afs: AngularFirestore) {
console.log('new instance created!');
this.source = this.afs.collection('test-
collection').valueChanges().pipe(
tap((docs) => { console.log(`Read ${docs.length} docs`); }),
shareReplay(1));
this.aa = this.source.subscribe()
this.bb = this.source.subscribe()
}
}
Order-Plcaing-component.ts
-------------------------
export class OrderPlacingCompnent implements OnInit {
constructor(private singelton: SingeltonService){}
ngOnInit() {}
}