我遵循nestjs最常见的结构,其中每个域都有单独的文件夹
src/
user/
controllers/
user.controller.ts
repositories/
user.repository.ts
services/
user.service.ts
user.module.ts
team/
// the same as above but for team entity
team.module.ts
app.module.ts
在我的应用程序中,我有user
和team
之间的多对多关系。因此,用户可以拥有许多团队,就像团队可以拥有许多用户一样。为此,我创建了表user_teams
,并为该表创建了一个明显独立的存储库。在我的应用程序中的大多数地方,我需要使用像getAllUsersInTeam(idTeam: number)
和getAllTeamsBelongsToUser(idUser: number)
这样的函数,并且我已经在存储库UserTeamRepository
中实现了这些函数。我的问题是,将此存储库文件保存在正确的位置?在哪个模块中?我有几个想法
在与主域实体相同的级别上创建一个单独的文件夹
src/ user/ // user module files team/ // team module files user-team/ repositories/ user-team.repository.ts user-team.module.ts
在这种情况下,我可能会为每个多对多关系都有很多文件夹,这会给项目带来混乱和混乱。
在某些模块
user
或team
中保留UserTeamRepository
。src/ user/ repositories/ user-team.repository.ts // or team/ repositories/ user-team.repository.ts
在这种情况下,我看到了对项目理解不足的问题。为什么我们把一个关系放在一个文件夹里,而另一个我们决定用另一种方式保存。如何快速搜索此类关系。我认为新的开发人员会感到困惑,在哪里可以找到所需的关系,在哪里保持新的关系,因为在良好的架构中,在哪里保留新的类应该是没有问题的。
我愿意接受任何讨论和想法。感谢您提前反馈!
我觉得很奇怪,你竟然决定要一个UserTeamRepository
。
如果您想要一个方法getAllUsersInTeam
,它应该在UserRepository
中,因为您正在请求Users。如果您想要一个方法getAllTeamsBelongsToUser
,它应该在TeamRepository
中,因为您正在请求Teams。
然后,这些方法中的每一种都有责任加入您的中间表以完成其任务。