我无法理解在 golang 中组织应用程序依赖结构的最佳方法。
本质上,我的应用程序的结构如下:
accounts
...
handlers
accounts.go
models
account.go
repos
account.go
Run Code Online (Sandbox Code Playgroud)
现在我有一个用于帐户的数据库访问对象 (DAO) 设置,我想避免将验证逻辑放在那里,因为这更适合模型域。存储库旨在仅处理与数据库的交互。
在模型内部,我认为进行验证是有意义的。然而,一项验证(例如电子邮件的唯一性)需要使用 DAO,这会引发有关循环依赖的错误。
我很好奇在这个范例中组织验证的最佳方法是什么?我真的应该为任何交互添加一个服务层吗?也就是说,我是否应该有一个仅是帐户结构的模型,然后进行验证并在服务中保存挂钩之前?