将角度ngrx数据写入服务响应到单独的entityCache节中

问题描述 投票:0回答:1

我目前正在使用ngrx-data存储信息的项目中。到目前为止,它运行良好,但是现在我想存储来自端点的实体数据,该端点在响应中为我提供了两种单独的实体类型。

{
  "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"
}

现在我想将它们分别保存在ngrx-data的entityCache中。为此,我在Angular中实现了基本的HTTP服务,该服务扩展了DefaultDataService。我将其集成到外观中并添加了必要的元数据。

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

我可以从商店“整体上”获得所有接收到的信息,但是我认为我失去了使用ngrx-data所获得的许多优势(例如获取ID数组)。

是否有某种方法可以规范化/分割数据并将其写入entityCache的不同部分?

非常感谢您提供任何提示。

angular ngrx ngrx-entity ngrx-data
1个回答
0
投票

您需要在getAll()中扩展dataService方法。 getAll(): Observable<Users[]> { return super.getAll().pipe(map(data => data.users)); }

但是在这个概念上,您需要另一个dataService来发布帖子。但是我认为这是多余的,如果您使用ngrx包实现自定义状态管理,那就更好了,因为此数据包现在太严格了,只支持纯C.R.U.D.操作。

© www.soinside.com 2019 - 2024. All rights reserved.