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

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

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

我能够从商店“整体”获取所有收到的信息,但我认为我失去了使用 ngrx-data 获得的许多优势(比如获取一组 id)。

有没有办法规范化/拆分数据并将其写入不同的部分entityCache

非常感谢您的任何提示。

4

1 回答 1

1

您需要getAll()dataService. getAll(): Observable<Users[]> { return super.getAll().pipe(map(data => data.users)); }

但是在这个概念中,您需要另一个dataService帖子。但我认为这是冗余,如果你使用 ngrx 包实现自定义状态管理会更好,因为这个数据包现在太严格了,只支持纯 CRUD 操作。或者需要将数据分离到两个 API 端点。

于 2020-01-14T16:55:19.510 回答