gpt4 book ai didi

node.js - NestJS项目架构: how to avoid dependencies between modules

转载 作者:行者123 更新时间:2023-12-03 08:00:16 29 4
gpt4 key购买 nike

我在 NestJS 中有几个模块:

  1. 学生模块
  2. 财务模块
  3. 组模块
  4. 分数模块
  5. 主题模块

模块包括与单个资源或功能相关的模型、存储库、服务、 Controller 。

在增删改查操作之前,我需要检查是否可以更新/删除某些资源(学生、小组等)。例如,当某些学生正在学习某个科目时,我们不能删除该科目。

在一些操作之后,我想调用一些“副作用”操作,例如:

  • 删除学生后,也应将其从所有群组中删除。
  • 在 DB 中创建学生时,还应该为该学生创建财务记录
  • 当学生被添加到小组中时,应在数据库中插入成绩单文档

如何组织项目架构,以避免“错误”的依赖关系?

如果我在 StudentService.create() 方法中调用 ScoresService.createEmptySheet(...args) 方法,它会使 StudentModuleScoresModule 的依赖项(因为 ScoresServiceScoresModule 的一部分),这似乎是错误的,因为学生模块实际上独立于财务模块而存在,财务状况取决于学生,而不是相反。

你认为,让StudentModule依赖于ScoresModule是正常的吗?!

换句话说,我需要组织模块之间的通信,而不是使它们在逻辑上不相互依赖时相互依赖。

P.S 我无法使用 SQL 的外键,我正在使用 MongoDB。

最佳答案

我想说这个问题所指向的问题比 NestJs 模块更广泛,并且针对的是整个软件架构。

要具体回答您的问题,您的直觉可能是正确的,使 UserService 依赖于 ScoresService 在较大的系统中并不是最佳解决方案。

根据具体的不同解决方案是正确的,但它可能就像创建第三个服务 UserScoreService 一样简单,它依赖于 ScoresService 和 UserService ,允许它们保持彼此独立。

更广泛地说,如果您有兴趣了解有关此主题的更多信息,我建议您查看 Robert C. Martin 的 Clean Architecture和六边形架构。

关于node.js - NestJS项目架构: how to avoid dependencies between modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74561808/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com