Получение агрегата по другому свойству, чем ID в Prooph
Как проще всего получить агрегат из хранилища агрегатов, не зная его идентификатора, но зная другое уникальное свойство? Например у меня Cart
который имеет идентификатор как AggregateId и ownerId
как другое имущество.
1 ответ
В CQRS (при условии, что у вас есть такая система) при выполнении транзакции с корнем агрегата вам необходимо состояние агрегата, чтобы принять решение для сохранения инвариантов.
Что касается чтения, типичным шаблоном является проецирование / денормализация / индексирование данных в зависимости от обстоятельств, чтобы облегчить запросы по мере необходимости.
Таким образом, как правило, у вас будет проекция отслеживать каждое событие и индекс на основе OwnerId
чтобы облегчить запрос. Если это только для целей поиска, чтобы запустить некоторую команду обработки решения, это может быть так же просто, как карта OwnerId
в собственности CartIds
,
Вы не предоставили много контекста; это зависит от того, пытаетесь ли вы создать систему истории заказов или доставку и т. д. Скорее всего, вы получите хороший ответ на любой дополнительный вопрос, если объясните больше о том, чего вы пытаетесь достичь в целом.