是否可以接受嵌套的JSON api响应,并使用NgRx实体库对其进行规范化?如果我有一个看起来像这样的对象:
[
{
"id": "1",
"title": "My first post!",
"author": {
"id": "123",
"name": "Paul"
},
"comments": [
{
"id": "249",
"content": "Nice post!",
"commenter": {
"id": "245",
"name": "Jane"
}
},
{
"id": "250",
"content": "Thanks!",
"commenter": {
"id": "123",
"name": "Paul"
}
}
]
},
{
"id": "2",
"title": "This other post",
"author": {
"id": "123",
"name": "Paul"
},
"comments": [
{
"id": "251",
"content": "Your other post was nicer",
"commenter": {
"id": "245",
"name": "Jane"
}
},
{
"id": "252",
"content": "I am a spammer!",
"commenter": {
"id": "246",
"name": "Spambot5000"
}
}
]
}
]
我想用NgRx Entity让它尽可能的扁平化,这是可能的吗?如果可能,如何实现?
我试过使用normalizr库,它可以很好地展平对象,但它不太适合NgRx助手函数,如createReducers()和createActions()。
有谁知道吗?
发布于 2019-09-07 00:20:04
不,@ngrx/entity
不提供normalize实用程序。它包含将集合存储和读取到存储中的CRUD操作。
发布于 2019-09-06 20:09:10
好的
你可能在任何地方都有一个效果,就像官方文档(https://ngrx.io/guide/effects)中的效果:
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load Movies'),
mergeMap(() => this.moviesService.getAll()
.pipe(
// map -> flat your response here
map(movies => ({ type: '[Movies API] Movies Loaded Success', payload: movies })),
catchError(() => EMPTY)
))
)
);
您可以简单地预先放置另一个映射,该映射将展平电影数组。您可以使用lodash函数来完成此操作。
https://stackoverflow.com/questions/57821449
复制相似问题