我编写了一个应用程序,通过使用注入serverService的ngxs,我可以在mongodb中保存事件。当我发送事件时,我不使用id,因为mongo自动添加id,只需等待它,然后修补状态。(insertEvent返回id,然后查找整个事件并获取该事件)
@Action(CreateEvent)
createEvent({ getState, patchState }: StateContext<EventStateModel>, { event }: CreateEvent) {
this.eventsService.insertEvent(event)
.pipe(map(id => id['id']))
.pipe(switchMap(id => id ? this.eventsService.getEventById(id) : empty() ))
.subscribe(event => {
const { events } = getState();
patchState({
events: [
...events,
event
]
});
});
}但是添加事件之后,我想获得这个Id,以直接到事件视图。我不知道如何获得id事件。
createRandom(){
this.store.dispatch(
new CreateEvent(EventFactory.create())
)
}当我尝试使用动作处理时,它总是用模拟id返回me事件。
this.actions$.pipe(ofActionSuccessful(CreateEvent)).subscribe((ev) => {
console.log(ev)
})发布于 2019-11-27 02:34:59
是的,在这种情况下,操作流将返回您分派的操作的有效负载(带有模拟ID)。
我可以在这里看到两种选择:
EventCreated --在此操作有效负载中,包含刚才创建的内容的详细信息( ID)。在您的patch操作之后分派它。或
withLatestFrom操作符获取状态的最新视图,并检查您的“`events”数组中的最后一个event,以查看所生成的ID。https://stackoverflow.com/questions/59048128
复制相似问题