Уменьшить чтение документов в пожарной коллекции Firebase - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть веб-приложение, разработанное с использованием angular 6 и google-clod-firestore, которое принимает заказ от клиента на доставку книг; в настоящее время оно состоит из двух компонентов

  1. CRM-компонент
  2. Компонент размещения заказа

, когда клиент делает звонок, он появится в 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() {}
 }

1 Ответ

0 голосов
/ 02 февраля 2019

Одним из вариантов является создание документа, который содержит всю информацию, которую вы хотите отобразить на этой странице заказа.Вероятно, это будет идентификатор и название каждой книги, но, скорее всего, есть гораздо больше информации, которую вы храните для книги, но не отображаете ее на странице заказа.Поскольку все эти данные в этом синтезированном документе помещаются на одной странице, они должны умещаться в пределах 1 МБ для размера документа.

Этот подход довольно распространен в базах данных NoSQL, где вы часто выполняете дополнительную работупри изменении данных сделать последующее чтение проще / дешевле.Поскольку чтения часто встречаются гораздо чаще, это делает чтение более масштабируемым.

Дополнительные примеры можно найти в видео Как структурировать данные в превосходном Знакомство с облакомFirestore sercies.

...