NGXS 获取对象的 ID
NGXS get id of object
我正在编写应用程序,我可以通过在我注入 serverService 的地方使用 ngxs 将事件保存在 mongodb 中。当我发送事件时,我在没有 id 的情况下这样做,因为 mongo 自动添加 id,只需等待它然后修补状态。 (插入事件返回 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())
)
}
当我尝试使用动作处理时,它总是 returns 我用模拟 ID 进行的事件。
this.actions$.pipe(ofActionSuccessful(CreateEvent)).subscribe((ev) => {
console.log(ev)
})
Console Log return
是的,在这种情况下,动作流将 return 您发送的动作的负载(带有模拟 ID)。
我可以在这里看到两个选项:
- 创建不同的操作,例如
EventCreated
然后您可以订阅 - 在此操作负载中,包括刚刚创建的内容的详细信息(ID)。在您的 patch
操作后调度它。
或
- 在当前的动作流管道中,使用
withLatestFrom
运算符获取状态的最新视图,并检查 `events 数组中的最后一个 event
以查看生成的 ID。
我正在编写应用程序,我可以通过在我注入 serverService 的地方使用 ngxs 将事件保存在 mongodb 中。当我发送事件时,我在没有 id 的情况下这样做,因为 mongo 自动添加 id,只需等待它然后修补状态。 (插入事件返回 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())
)
}
当我尝试使用动作处理时,它总是 returns 我用模拟 ID 进行的事件。
this.actions$.pipe(ofActionSuccessful(CreateEvent)).subscribe((ev) => {
console.log(ev)
})
Console Log return
是的,在这种情况下,动作流将 return 您发送的动作的负载(带有模拟 ID)。
我可以在这里看到两个选项:
- 创建不同的操作,例如
EventCreated
然后您可以订阅 - 在此操作负载中,包括刚刚创建的内容的详细信息(ID)。在您的patch
操作后调度它。
或
- 在当前的动作流管道中,使用
withLatestFrom
运算符获取状态的最新视图,并检查 `events 数组中的最后一个event
以查看生成的 ID。