从另一个控制器调用控制器是个坏主意吗?
Is it a bad idea calling a controller from another controller?
我正在使用 node.js 和 express.js 构建 Web 服务,并首次尝试使用 MVC 架构。
我有一个 html 表单,用户发送到特定路由(假设 POST 到 /formprocessing)。在后端,当我收到表单数据时,我必须执行几项任务。
- 首先我把数据存入数据库
- 那我要做一些数据处理
- 最后我向客户发送了一个压缩文件
因此,一开始我将代码拆分到不同的控制器中,以便每个控制器执行一项任务。例如,formController 将数据保存在 de db 中,processingController 进行一些计算,zipController 将 zip 文件发送到客户端。但是,现在我试图在处理请求时将所有三个部分放在一起,但我在互联网上发现我不应该从另一个组件调用一个组件(从另一个组件调用控制器)。那我应该使用哪种正确的方法呢?将控制器包装为 util 函数并仅从一个控制器调用它们?
Controller
的想法是,这是一个处理应用程序传输层的实体。理想情况下,唯一调用 Controller 的应该是您的传输层,例如HTTP 请求,因为它通常包含一些特定于传输层的代码。
通常应用程序具有三个级别,Controller
、Services
、Models
。
Controller
处理传输层并调用一些 Services
.
Service
包含业务逻辑并与 Models
交互以在数据库中保存更改。
Models
与数据库交互。
因此,当您需要执行在控制器中执行的操作时,您将使用与传输层无关的 Service
。所以你可以有 service A
并且它需要做一些服务 B
你可以使用 service B
inside service A
的方法来实现它需要的东西,而不需要调用控制器。
P.S。这里有一些对您有用的读物 https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf
我正在使用 node.js 和 express.js 构建 Web 服务,并首次尝试使用 MVC 架构。
我有一个 html 表单,用户发送到特定路由(假设 POST 到 /formprocessing)。在后端,当我收到表单数据时,我必须执行几项任务。
- 首先我把数据存入数据库
- 那我要做一些数据处理
- 最后我向客户发送了一个压缩文件
因此,一开始我将代码拆分到不同的控制器中,以便每个控制器执行一项任务。例如,formController 将数据保存在 de db 中,processingController 进行一些计算,zipController 将 zip 文件发送到客户端。但是,现在我试图在处理请求时将所有三个部分放在一起,但我在互联网上发现我不应该从另一个组件调用一个组件(从另一个组件调用控制器)。那我应该使用哪种正确的方法呢?将控制器包装为 util 函数并仅从一个控制器调用它们?
Controller
的想法是,这是一个处理应用程序传输层的实体。理想情况下,唯一调用 Controller 的应该是您的传输层,例如HTTP 请求,因为它通常包含一些特定于传输层的代码。
通常应用程序具有三个级别,Controller
、Services
、Models
。
Controller
处理传输层并调用一些Services
.Service
包含业务逻辑并与Models
交互以在数据库中保存更改。Models
与数据库交互。
因此,当您需要执行在控制器中执行的操作时,您将使用与传输层无关的 Service
。所以你可以有 service A
并且它需要做一些服务 B
你可以使用 service B
inside service A
的方法来实现它需要的东西,而不需要调用控制器。
P.S。这里有一些对您有用的读物 https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf