尝试访问命令内部的集合

时间:2018-08-23 08:10:58

标签: wolkenkit

如何从对象的命令或事件(例如usermanagement.user)中获取另一个对象的状态(例如administration.regulation)?场景:我在包含简单规则集的规则内部有配置文件,在用户做完某件事后,我想查看是否符合规则。我尝试在用户内部的命令和动作中执行此操作,并尝试在流中获取规则,但似乎无法完成。

1 个答案:

答案 0 :(得分:1)

wolkenkit提供了从聚合的命令处理程序中访问其他聚合的选项。这是通过使用services完成的。

例如,命令处理程序通常如下所示:

const commands = {
  doSomething (file, command) {
    // ...
  }
};

现在,通过使用服务,您可以像访问客户端一样访问app对象本身。为此,请使用services作为命令处理程序的第三个参数。然后,在命令处理程序内,您可以使用services.app来读取其他聚合。请注意,您必须在此处使用await关键字:

const commands = {
  async doSomething (file, command, services) {
    // ...

    const otherAggregate = await services.app.someContext.someAggregate(id).read();

    // ...
  }
};

(可选)您可以使用对象分解并稍微简化代码:

const commands = {
  async doSomething (file, command, { app }) {
    // ...

    const otherAggregate = await app.someContext.someAggregate(id).read();

    // ...
  }
};

您可以在documentation中找到所有与此相关的详细信息。

希望这会有所帮助