【问题标题】:Is it a bad idea calling a controller from another controller?从另一个控制器调用控制器是一个坏主意吗?
【发布时间】:2021-08-12 03:55:06
【问题描述】:

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

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

  1. 首先我将数据保存在数据库中
  2. 那我必须做一些数据处理
  3. 最后我向客户端发送了一个 zip 文件

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

【问题讨论】:

    标签: node.js model-view-controller routes controller


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2016-01-05
      相关资源
      最近更新 更多