我遵循 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
中,因为您正在请求用户。
如果您需要方法 getAllTeamsBelongsToUser
,它应该在 TeamRepository
中,因为您正在请求 Teams。
然后,这些方法中的每一个都负责加入您的中间表以完成其任务。
关于node.js - 多对多关系的正确文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67158919/