mer*_*rko 0 javascript mongodb ngrx ngrx-effects angular
我需要向 API 发送一个 put 请求,ngrx/effect但该请求需要 id 和内容,以便 MongoDB 能够找到帖子。
这是代码,我尝试设置两个操作有效负载:
export class UpdatePost implements Action {
readonly type = UPDATE_POST
constructor(public payload: string & Post ) { }
}Run Code Online (Sandbox Code Playgroud)
这是效果:
@Effect()
editPost$: Observable<Action> = this.actions$
.ofType(PostActions.UPDATE_POST)
.map((action: PostActions.UpdatePost) => action.payload)
.switchMap((?) => {
return this.postService.editPost(id, post);
})
.map(editedpost => ({type: PostActions.UPDATE_POST_SUCCESS, payload: editedpost}))
}Run Code Online (Sandbox Code Playgroud)
editPost()需要两个参数:id 和 content。
我想我的操作有效负载应该以其他方式设置,我是新手,ngrx所以欢迎提出建议。
当你声明一个 string & Post 类型的变量时,就意味着这个变量拥有 Post 的所有方法和 string 的所有方法。这可能不是你想要的。您希望您的操作具有标识符(字符串类型)和帖子。您可以为此声明一个接口,或者您的操作可以有多个属性,如下所示:
export class UpdatePost implements Action {
readonly type = UPDATE_POST
constructor(public id: string, public payload: Post ) { }
}
Run Code Online (Sandbox Code Playgroud)
那么在你的效果中你可以写:
@Effect()
editPost$: Observable<Action> = this.actions$
.ofType(PostActions.UPDATE_POST)
.switchMap(action => {
return this.postService.editPost(action.id, action.post);
})
.map(editedpost => ({type: PostActions.UPDATE_POST_SUCCESS, payload: editedpost}))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4588 次 |
| 最近记录: |