Многократные Наблюдаемые подписки посещают HTTP DB - PullRequest
0 голосов
/ 29 ноября 2018

По аналогии с этот поток , я также реализую аналогичным образом.Моя идея заключается в том, чтобы кэшировать централизованные данные json в БД, чтобы к ним могли обращаться многие компоненты.

Однако в моем случае у меня есть служба данных http;который фактически выбирает данные JSON из локальной базы данных json-сервера, как показано ниже:

export class ProductDataService implements OnInit {

  constructor(private httpClientService: HttpClient) {
    this.productDataURL = environment.production ? "http://Server" : "http://localhost:3000/products";
    this.productList = this.httpClientService.get<IProduct[]>(this.productDataURL);
  }
}

Эта служба данных используется во многих компонентах, а также для просмотра асинхронных каналов.Ниже приведены некоторые из многих потребителей:

Компонент 1:

    export class DetailsProductsComponent implements OnInit {
         constructor(private activatedRoute: ActivatedRoute, private productService: ProductDataService) {     
            this.productService.productList.subscribe(item => 
              {
                this.selectedProduct = item.find(value => value.productCode == this.productId);
              });    
          }
}

Компонент 2:

export class ProductListComponent implements OnInit {

  _filterString: string = "";

  constructor(private productDataService: ProductDataService) {
    this._filterString = "";    
    this.productDataService.productList.subscribe(item => this.filteredProducts = this.masterProductList = item);
  }
}

Как вы можете видеть выше, я только что перечислил 2 компонента, которыеиспользуют службу данных для своих собственных задач.Есть еще несколько компонентов как таковых.

Пожалуйста, укажите мне следующее:

  1. Это правильный способ доступа к данным?если нет, пожалуйста, руководство?
  2. Я заметил, что при переходе к любому из компонентов посредством щелчков пользовательского интерфейса выполняется вызов по каналам подписки или асинхронности;который попадает в вызов БД Json-сервера.Я вижу журнал в окне терминала через json-сервер.Так не плохая ли производительность?Как сделать это эффективным?
  3. Кроме того, я также пытаюсь сделать автоматическое обновление наблюдаемого при обновлении БД.Но это не работает.Что мне делать?

Спасибо

Использованные библиотеки: "rxjs": "~ 6.2.0", "@ angular / animations": "^ 6.1.10"," @ angular / common ":" ^ 6.1.10 "," @ angular / compiler ":" ^ 6.1.10 "," @ angular / core ":" ^ 6.1.10 "," @ angular / forms ": "^ 6.1.10", "@ angular / http": "^ 6.1.10", "@ angular / platform-browser": "^ 6.1.10", "@ angular / platform-browser-dynamic": "^ 6.1.10 "," @ angular / router ":" ^ 6.1.10 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...