- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法弄清楚如何处理有关 resolvejs 中聚合根之间关系的一些基本内容。基本问题是我如何处理关系的完整性?为此,您似乎需要同时了解双方的知识,但这在写入方面似乎是不允许的。
设置如下:我正在尝试构建一个用户管理工具,我有两个聚合根,User
和 Organisation
.我需要允许两者独立存在并定义一个 access
它们之间的关系(即用户可以访问任意数量的组织)。
如果关系属于User
,我可以创建一个像 grantAccessToOrganisation
这样的命令在 User
聚合采用 organisationId
但这提出了几个问题。我如何确保 organisationId
提供的是真的吗?似乎它需要在命令处理程序中发生,但由于该命令属于 User
聚合,我无权访问 Organisation
总计的。另外,当一个组织被移除时,我应该如何处理?似乎这应该对所有有权访问它的用户产生副作用,但我似乎没有在写入端进行该查询的好方法。
最佳答案
尽量不要将聚合视为传统系统中的“实体”。选择聚合根作为事务和一致性边界。
这意味着对给定聚合的所有命令都是连续的,其状态是一致的,这意味着您可以确保您的命令应用于预期的聚合状态,并且其他用户或进程没有进行任何更改。
作为一个极端的例子,您甚至可以拥有一个聚合“系统”,并且您可以访问整个系统状态。但这意味着状态的大小将是巨大的,每个命令都会锁定整个系统。
因此,请选择足够大的聚合来控制其交易,而选择足够小的聚合来阻止其他交易。
在您的示例中,我可以猜测用户更多地是关于身份、登录、个人资料、头像——诸如此类。它可以在不了解码织和访问权限的情况下生存。组织是处理访问权限的集合,更改访问权限是影响单个组织的事务。
因此,我会将 grantAccess 命令发送给组织,而不是您示例中的用户。但当然这取决于其他要求,我在这里可能是错的。
此外,总会有一些可以用 saga 实现的聚合间业务规则。例如,如果用户登录被禁用,则其访问权限将在 30 天后删除。 Saga 是一个长期运行的业务事务,可以影响多个聚合。
关于domain-driven-design - 如何处理resolvejs中聚合根之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68137694/
有没有办法通过 aggregateId 过滤与读取模型关联的投影中的事件? 在进行的测试中,我们总是收到所有 已注册的事件。是否可以在前一阶段应用过滤器? 我们有 100,000 个 aggregat
任何人已经用过 https://reimagined.github.io/resolve/并获得热重载以进行 react 工作? 干杯 -raf 最佳答案 TL;博士 这个 HackerNews 示例
我需要通过 RESTful 接口(interface)连接到另一个系统的 API,该接口(interface)将通过 websocket 连接提供事件。 我正在使用一个 javascript 库来处理
reSolveJS 通常作为单个 NodeJS 应用程序在服务器上运行以进行生产部署吗? 当然,事件存储和读取模型可能是单独的应用程序(例如数据库),但 CQRS 读取端和写入端是否在同一个 Node
我是一名优秀的程序员,十分优秀!