Я смотрел в Event Store ненадолго, и одна вещь, которая меня задевала, - это когда нужно подумать о написании проекции? Обычная практика заключается в создании сплющенной проекции?EventStore Прогнозы, когда их использовать
Установка здесь с использованием потока в совокупности
Например, предположим, что у меня есть 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);
})
Вышеупомянутое не очень много значит и объединяет все потоки int o единственное число. Возможно ли проецировать более плоское представление, например, в нечто подобное? Возможно, я получил свои проводы, но, видимо, используя emit
, вы можете это достичь?
{
string Reference;
string CurrencyCode;
decimal PayingAmount;
}
Мое мышление, когда я писал в потоке я могу гарантировать совокупность находится в допустимом состоянии и, таким образом, для любых заинтересованных сторон, я должен выставить только поля эти процессы требуют. Проецирует простую модель (де-номарглизированный вид) правильную вещь.
Вышеприведенный пример, но вы можете себе представить, что совокупность немного сложнее.
Если я пропустил что-либо или вам необходимо уточнить, пожалуйста, прокомментируйте, и я могу добавить.
Звучит нормально для меня. Я думаю, что Projections по-прежнему находятся в стадии бета-версии, предположительно, в 4.0.0. Прочитали ли вы существующие документы по проектам? http://docs.geteventstore.com. В проекте, над которым я работал, мы использовали встроенные прогнозы, когда у нас было какое-то простое состояние, которое мы хотели запросить (имена пользователей должны были быть уникальными, поэтому мы поддерживали прогнозы имен пользователей в пользовательских агрегатах/потоках). – tomliversidge
Я читал документы, и мне не хватает деталей. Можно ли загружать поток в запрос, чтобы вы могли вытащить весь агрегат? Это значит, что если я получу событие 2, загрузите весь агрегат, захватите информацию из обоих событий 1 и 2 и создайте сплющенный вид. Это возможно? –
Вы можете подписаться на категорию, которая представляет вашу совокупность (в моем примере, «пользователи»), затем используйте простые инструкции JavaScript, чтобы определить, что делать с каждым типом события ... I.e. Если тип события = eventtype1 {} и т. Д. – tomliversidge