我的mvc控制器中有一个post方法,用于保存(使用ajax调用)新创建的任务。由于任务是域实体,因此在创建实体时,我会为其生成(在服务器端)唯一ID - GUID。
当成功创建任务时,我需要将此GUID传递回客户端,以完成将在页面上显示的新html元素的创建。
当然我可以从控制器保存方法返回此GUID,但我不是很喜欢它,因为在我看来它破坏了SRP规则。保存任务方法应该只负责保存实体,而不是返回值。
另一种选择是在保存单个任务后再执行一次ajax调用,获取所有需要信息(包括GUID)的所有任务并在页面上再次渲染所有这些 - 由于我有所有需要的信息,因此不是很好客户端(GUID除外)使用例如jsrender创建新任务。
另一种选择是在客户端创建GUID。据我所知,有一些脚本可以做到这一点。但我更愿意在服务器端创建GUID。
有没有更好的方法?或者我试图使事情太复杂,我只是应该从save方法返回GUID值?
请让我知道您的想法。谢谢!
答案 0 :(得分:0)
保存不应该返回新实体,但不是因为SRP(它与它无关)。保存只是为传递给save方法的AR设置新ID。大多数(如果不是全部)ORM以同样的方式执行。
foo = fooFactory() // aggregate root factory
print foo.id // None
fooRepository.save(foo)
print foo.id // newly created id
现在将它返回到你的ajax视图。