首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGXS获取对象标识

NGXS获取对象标识
EN

Stack Overflow用户
提问于 2019-11-26 09:54:20
回答 1查看 491关注 0票数 0

我编写了一个应用程序,通过使用注入serverService的ngxs,我可以在mongodb中保存事件。当我发送事件时,我不使用id,因为mongo自动添加id,只需等待它,然后修补状态。(insertEvent返回id,然后查找整个事件并获取该事件)

代码语言:javascript
复制
@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事件。

代码语言:javascript
复制
createRandom(){
    this.store.dispatch(
      new CreateEvent(EventFactory.create())  
    )
  }

当我尝试使用动作处理时,它总是用模拟id返回me事件。

代码语言:javascript
复制
this.actions$.pipe(ofActionSuccessful(CreateEvent)).subscribe((ev) => {
   console.log(ev)
})

控制台日志返回

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-27 02:34:59

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

我可以在这里看到两种选择:

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

  1. 在当前操作流管道中,使用withLatestFrom操作符获取状态的最新视图,并检查您的“`events”数组中的最后一个event,以查看所生成的ID。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59048128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档