适用于多对多关系的正确文件夹结构



我遵循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

在我的应用程序中,我有userteam之间的多对多关系。因此,用户可以拥有许多团队,就像团队可以拥有许多用户一样。为此,我创建了表user_teams,并为该表创建了一个明显独立的存储库。在我的应用程序中的大多数地方,我需要使用像getAllUsersInTeam(idTeam: number)getAllTeamsBelongsToUser(idUser: number)这样的函数,并且我已经在存储库UserTeamRepository中实现了这些函数。我的问题是,将此存储库文件保存在正确的位置?在哪个模块中?我有几个想法

  1. 在与主域实体相同的级别上创建一个单独的文件夹

    src/
    user/
    // user module files
    team/
    // team module files
    user-team/
    repositories/
    user-team.repository.ts
    user-team.module.ts
    

    在这种情况下,我可能会为每个多对多关系都有很多文件夹,这会给项目带来混乱和混乱。

  2. 在某些模块userteam中保留UserTeamRepository

    src/
    user/
    repositories/
    user-team.repository.ts
    // or
    team/
    repositories/
    user-team.repository.ts
    

    在这种情况下,我看到了对项目理解不足的问题。为什么我们把一个关系放在一个文件夹里,而另一个我们决定用另一种方式保存。如何快速搜索此类关系。我认为新的开发人员会感到困惑,在哪里可以找到所需的关系,在哪里保持新的关系,因为在良好的架构中,在哪里保留新的类应该是没有问题的。

我愿意接受任何讨论和想法。感谢您提前反馈!

我觉得很奇怪,你竟然决定要一个UserTeamRepository

如果您想要一个方法getAllUsersInTeam,它应该在UserRepository中,因为您正在请求Users。如果您想要一个方法getAllTeamsBelongsToUser,它应该在TeamRepository中,因为您正在请求Teams。

然后,这些方法中的每一种都有责任加入您的中间表以完成其任务。

最新更新