Как правильно юзать сервис для работы с данными в нем?

Добрый день всем. Вопрос такой:
Как правильно юзать сервис для работы с данными в нем? (удаление, добавление, редактирование)

На данный момент, после получения списка счетов с сервера, они хранятся в массиве "accountsList" в виде промиса и тут впадаю в ступор, как правильно обработать в сервисе такие данные и правильно ли это?

И как подобный сервис можно привести еще к более хорошему, правильному и удобному виду?
И был бы рад увидеть примеры работы с сервисами на крупных проектах.
(function(){
  'use strict';
  angular
    .module('app.manager.finance.accounts')
    .factory('AccountsFinanceService', AccountsFinanceService);

  AccountsFinanceService.$inject = ['Http', 'Notification', 'API'];

  function AccountsFinanceService(Http, Notification, API) {
    var AccountsFinanceService = {
      listAccounts  : listAccounts,             // Список счетов
      getAccounts   : getAccounts,              // Получение счетов
      setAccounts   : setAccounts,              // Редактирование счета
      deleteAccounts: deleteAccounts            // Удаление счета
    };
    var accountsList = [];

    function listAccounts() {
      if (accountsList.length === 0) {
        accountsList = AccountsFinanceService.getAccounts();
      };
      return accountsList;
    };

    function getAccounts() {
      var config = {
        url: API.url + 'finances/accounts',
        method: 'GET'
      };
      return Http(config).then(function(res){
        return res.data;
      }, function(res){
        Notification.error('Произошла ошибка, попробуйте позже.');
      });
    };

    function setAccounts() {
      //body
    };

    function deleteAccounts(index, id) {
      var config = {
        url: API.url + 'finances/accounts/' + id,
        method: 'DELETE'
      };
      Http(config).then(function(res){  
        Notification.success('Запись успешно удалена.');
      }, function(res){
        Notification.error('Произошла ошибка, попробуйте позже.');
      });
    };

    return AccountsFinanceService;
  };

})();
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 1
alexiusp
@alexiusp
senior frontend developer
Я бы разделил работу с моделью и http в разные модули. Тогда в модуле, отвечающем за запросы к серверу можно было бы реализовать и работу с промисами и кэширование по необходимости, а модуль, отвечающий за работу с моделью был бы очень лёгким и понятным. Нужна ли какая-либо пост-обработка пришедших данных или они уже приходят в удобном для представления формате? Если второе, то лучше работать напрямую с промисами - возвращать промисы в те компоненты, которым нужны соответствующие данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы