尝试访问命令内部的聚合
Trying to access aggregates inside commands
如何从对象的命令或事件中获取另一个对象的状态,比方说 usermanagement.user
,比方说 administration.regulation
?场景:我在包含简单规则集的法规中有配置文件,在用户完成某些操作后,我想看看是否符合规则。我尝试在用户内部的命令和操作中执行此操作,并尝试在流程中获取规则,但我似乎无法完成。
wolkenkit offers an option to access other aggregates from within an aggregate's command handler. This is done by using 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 中找到所有详细信息。
希望对您有所帮助
如何从对象的命令或事件中获取另一个对象的状态,比方说 usermanagement.user
,比方说 administration.regulation
?场景:我在包含简单规则集的法规中有配置文件,在用户完成某些操作后,我想看看是否符合规则。我尝试在用户内部的命令和操作中执行此操作,并尝试在流程中获取规则,但我似乎无法完成。
wolkenkit offers an option to access other aggregates from within an aggregate's command handler. This is done by using 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 中找到所有详细信息。
希望对您有所帮助