ここしばらく Event Store を見てきましたが、1 つ困惑したのは、いつプロジェクションの作成を検討すべきかということです。平らな投影を作成するのは一般的な方法ですか?
ここでの設定では、集約ごとにストリームを使用しています
たとえば、次のような 2 つのイベントがあるとします。
public class OrderPlaced
{
public OrderPlaced(string reference, Currency currency, Amount amount)
{
...
}
public string Reference { get; }
public Currency Currency { get; } //Custom type
public Amount Amount { get; } //Custom type
}
public class OrderCompleted
{
public OrderCompleted(string reference)
{
this.Reference = reference;
}
public string Reference { get; }
}
次のクエリがあります。
fromCategory('MyCategory')
.whenAny(function(s, e) {
linkTo("Foo", e);
})
上記は大したことはなく、すべてのストリームを単数形に集約するだけです。たとえば、このようなものに、よりフラットなビューを投影することは可能ですか? おそらく私はワイヤーを交差させましたが、どうやら使用してemit
これを達成できますか?
{
string Reference;
string CurrencyCode;
decimal PayingAmount;
}
私の考えでは、ストリームに書き込んだら、集約が有効な状態であることを保証できるため、利害関係者に対しては、これらのプロセスが必要とするフィールドのみを公開する必要があります。単純なモデル (正規化されていないビュー) を投影することは正しいことです..
上記は些細な例ですが、集計がもう少し複雑であることが想像できます。
私が何かを見逃した場合、またはさらに明確にする必要がある場合は、コメントしてください。追加できます.