CQRS:返回创建的ID

时间:2019-07-06 18:26:27

标签: cqrs event-sourcing

我需要将命令创建的实体的ID返回给客户端。 (例如,从new-potato重定向到potatoes/:id

我无法在客户端上创建ID,例如,因为:

  • 不能保证客户随机ID的质量。
  • 需要简短的顺序ID。

提交命令后可以返回ID吗? 例如,命令是

{
  type: "CreatePotato",
  eyes: 3
}

返回的有效载荷是

{
  data: {id: 1001}
}

该事件持续存在


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

1 个答案:

答案 0 :(得分:1)

您可以使用命令发送ID:

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

由于在一个好的系统中,id应该是唯一的,不可变的并且永远不带有任何语义,因此您可以在命令中直接生成一些GUID,CUID或您正在使用的任何内容,并假设命令成功了,则您的新实体ID是您发送的ID。