我目前正在做一个使用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- entityCache中。为此,我在Angular中实现了基本的HTTP服务,它扩展了DefaultDataService。我将其集成到我的外观中,并添加了必要的元数据。
constructor(entityServices: EntityServices) {
this.postsAndUsersService = entityServices.getEntityCollectionService(
'PostsAndUsers'
);
}export const entityMetadata: EntityMetadataMap = {
PostsAndUsers: {
selectId: selectIdPostsAndUsers
}
}我能够从商店“作为一个整体”获得所有收到的信息,但我认为我正在失去使用ngrx-data获得的许多优势(比如获得一组ids)。
有没有什么方法可以标准化/拆分数据并将其写入entityCache的不同部分
非常感谢您的任何提示。
发布于 2020-01-15 00:55:20
您需要在dataService中扩展getAll()方法。getAll(): Observable<Users[]> { return super.getAll().pipe(map(data => data.users)); }
但是在这个概念中,你需要为帖子添加另一个dataService。但我认为这是冗余的,如果您使用ngrx包实现自定义状态管理,效果会更好,因为这个数据包现在太严格了,只支持纯C.R.U.D操作。或者需要将数据分离到两个API端点。
https://stackoverflow.com/questions/59737767
复制相似问题