我正在Angular 9中使用NGRX / Entity,并且具有以下实体:
export interface Post {
id: number;
content: string;
title: string;
tags: Tag[];
}
export interface Tag {
id: number;
name: string;
}
Reducer类似于:
export interface State extends EntityState<Post> { }
export const adapter: EntityAdapter<Post> = createEntityAdapter<Post>();
export const initialState: State = adapter.getInitialState();
const postReducer = createReducer(
initialState,
on(PostActions.updatePost, (state, { post }) => {
return adapter.updateOne(post, state)
})
更新帖子时,API接受的模型与获取时不同:
export interface PostUpdateModel {
id: number;
content: string;
title: string;
tagsIds: number[];
}
我的想法是让一个Effect接受一个PostUpdateModel并将其发送到API,该API返回一个Post,然后调用updateOne。
这有意义吗?我该怎么办?
答案 0 :(得分:1)
是的,这很有道理。
另一种查看方法是将整个Post
对象发送给效果,然后让效果将其映射到请求对象。
此外,目前为每个帖子存储标签集合。在更复杂的情况下,这很难维护,因为此数据是重复的,normaling state可以提供解决此问题的解决方案(如果有)。