【问题标题】:what is the API for the read() function on aggregates?聚合上的 read() 函数的 API 是什么?
【发布时间】:2019-01-02 17:09:11
【问题描述】:

在writeModel上使用命令服务的参考使用这个例子:

const commands = {
  async issue (invoice, command, { app }) {
    const otherInvoice = await app.accounting.invoice(otherInvoiceId).read();

    // ...
  }
};

好的...如果我需要做的是真的搜索当前或其他聚合数据怎么办?是否有过滤器选项等可以传递给 read() 或其他东西来完成?如果没有,如何做到我的要求?

【问题讨论】:

  • 嘿????!我的回复是否回答了您的问题?

标签: wolkenkit


【解决方案1】:

在写入模型(处理命令的地方)中,聚合只能通过其 id 引用。因此,您提供的示例代码实际上是 read 来自写入模型的聚合的唯一可行方法,而 read 函数确实没有任何其他参数。

如果您需要执行搜索,您可能需要访问读取模型。在 CQRS 中,写入和读取模型应该相互独立,从写入模型内部访问读取模型通常被认为是一种不好的做法(除其他原因外,这主要是由于一致性问题导致最终一致性)。因此,wolkenkit 没有提供从写入模型访问读取模型的方法。

您可能想要做的是从客户端执行搜索,在发送命令之前,然后将所需的聚合 id 或 ids 作为命令的一部分发送,以便然后,您可以通过它们的 id 在写入模型中访问它们。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多