Angular ответ службы записи данных ngrx на отдельные разделы entityCache - PullRequest
1 голос
/ 14 января 2020

В настоящее время я работаю над проектом, в котором для хранения информации используются данные ngrx. Пока это работает отлично, но теперь я хочу сохранить данные сущности от конечной точки, которая дает мне два отдельных типа сущностей в своем ответе.

{
  "posts": [
    {
      "id": 1,
      "title": "Title"
    },
    {
      "id": 2,
      "title": "Title 2"
    }
  ],
  "users": [
    {
      "id": 1,
      "username": "Username"
    },
    {
      "id": 2,
      "username": "Username 2"
    }
  ],
  "date": "1996-10-15T00:05:32.000Z"
}

Теперь я хочу сохранить их отдельно в entityCache ngrx-данных. Для этого я реализовал базовый HTTP-сервис c в Angular, который расширяет DefaultDataService. Это я интегрировал в свой фасад и добавил необходимые метаданные.

constructor(entityServices: EntityServices) {
  this.postsAndUsersService = entityServices.getEntityCollectionService(
    'PostsAndUsers'
  );
}
export const entityMetadata: EntityMetadataMap = {
  PostsAndUsers: {
    selectId: selectIdPostsAndUsers
  }
}

Я могу получить всю полученную информацию "в целом" из магазина, но я думаю, что теряю много преимуществ, которые я получаю от использования данных ngrx (например, получение массива идентификаторов).

Есть ли способ нормализовать / разделить данные и записать их в различные секции entityCache?

Большое спасибо за любую подсказку.

1 Ответ

1 голос
/ 14 января 2020

Вам необходимо расширить метод getAll() в вашем dataService. getAll(): Observable<Users[]> { return super.getAll().pipe(map(data => data.users)); }

Но в этой концепции вам понадобится еще dataService для постов. Но я думаю, что это избыточность, лучше, если вы реализуете управление пользовательским состоянием с помощью пакета ngrx, потому что этот пакет данных теперь слишком строг и поддерживает только чистые операции C .RUD. Или нужно разделить данные на две конечные точки API.

...