CQRS: вернуть созданный идентификатор - PullRequest
0 голосов
/ 06 июля 2019

Мне нужно вернуть идентификатор сущности, которую команда создает для клиента. (Например, для перенаправления с new-potato на potatoes/:id)

Я не могу создать идентификатор на клиенте, например, потому что:

  • Качество случайного идентификатора клиента не может быть обеспечено.
  • Требуются короткие, последовательные идентификаторы.

Могу ли я вернуть идентификатор при отправке команды? Например, команда

{
  type: "CreatePotato",
  eyes: 3
}

возвращенная полезная нагрузка

{
  data: {id: 1001}
}

и событие сохраняется


{
  type: "PotatoCreated",
  id: 1001,
  eyes: 3
}

1 Ответ

1 голос
/ 08 июля 2019

Вы можете просто отправить ID с помощью команды:

{
  id: 1001,
  type: "CreatePotato",
  eyes: 3
}

Поскольку в хороших системных идентификаторах они должны быть уникальными, неизменяемыми и никогда не иметь какой-либо семантики, вы можете просто сгенерировать некоторый GUID, CUID или что-то, что вы используете, прямо в команде, и предположить, что если команда выполнена успешно, ваш новый Идентификатор объекта - это тот, который вы отправили.

...