【问题标题】:NGXS get id of objectNGXS 获取对象的 id
【发布时间】:2019-11-26 09:54:20
【问题描述】:

我正在编写应用程序,我可以使用注入 serverService 的 ngxs 将事件保存在 mongodb 中。当我发送事件时,我会在没有 id 的情况下这样做,因为 mongo 会自动添加 id,只需等待它然后修补状态即可。 (insertEvent returng id 然后我查找整个 Event 并获取它)

@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 的事件。

this.actions$.pipe(ofActionSuccessful(CreateEvent)).subscribe((ev) => {
   console.log(ev)
})

Console Log return

【问题讨论】:

    标签: angular ngxs


    【解决方案1】:

    是的,在这种情况下,动作流将返回您调度的动作的有效负载(带有模拟 ID)。

    我可以在这里看到两个选项:

    1. 创建不同的操作,例如然后您可以订阅EventCreated - 在此操作有效负载中,包括刚刚创建的内容的详细信息(ID)。在您的patch 操作之后发送它。

    1. 在当前动作流管道中,使用 withLatestFrom 运算符获取状态的最新视图,并检查 `events 数组中的最后一个 event 以查看生成的 ID。

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多