我目前正在使用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
的不同部分?
非常感谢您提供任何提示。
您需要在getAll()
中扩展dataService
方法。
getAll(): Observable<Users[]> {
return super.getAll().pipe(map(data => data.users));
}
但是在这个概念上,您需要另一个dataService
来发布帖子。但是我认为这是多余的,如果您使用ngrx包实现自定义状态管理,那就更好了,因为此数据包现在太严格了,只支持纯C.R.U.D.操作。