从另一个控制器调用控制器是个坏主意吗?

Is it a bad idea calling a controller from another controller?

我正在使用 node.js 和 express.js 构建 Web 服务,并首次尝试使用 MVC 架构。

我有一个 html 表单,用户发送到特定路由(假设 POST 到 /formprocessing)。在后端,当我收到表单数据时,我必须执行几项任务。

  1. 首先我把数据存入数据库
  2. 那我要做一些数据处理
  3. 最后我向客户发送了一个压缩文件

因此,一开始我将代码拆分到不同的控制器中,以便每个控制器执行一项任务。例如,formController 将数据保存在 de db 中,processingController 进行一些计算,zipController 将 zip 文件发送到客户端。但是,现在我试图在处理请求时将所有三个部分放在一起,但我在互联网上发现我不应该从另一个组件调用一个组件(从另一个组件调用控制器)。那我应该使用哪种正确的方法呢?将控制器包装为 util 函数并仅从一个控制器调用它们?

Controller 的想法是,这是一个处理应用程序传输层的实体。理想情况下,唯一调用 Controller 的应该是您的传输层,例如HTTP 请求,因为它通常包含一些特定于传输层的代码。

通常应用程序具有三个级别,ControllerServicesModels

  1. Controller 处理传输层并调用一些 Services.
  2. Service 包含业务逻辑并与 Models 交互以在数据库中保存更改。
  3. Models 与数据库交互。

因此,当您需要执行在控制器中执行的操作时,您将使用与传输层无关的 Service。所以你可以有 service A 并且它需要做一些服务 B 你可以使用 service B inside service A 的方法来实现它需要的东西,而不需要调用控制器。

P.S。这里有一些对您有用的读物​​ https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf