【问题标题】:What pattern should I use for such tasks?我应该为这些任务使用什么模式?
【发布时间】:2021-06-11 20:29:26
【问题描述】:

P.S 我可能不太了解 mvc 原理,但我一直认为业务逻辑应该发生在模型中 - 如果我错了,请纠正我

我正在编写项目并使用 mvc 模式。 路由器接受请求并传递给控制器​​,它获取数据并将其发送给模型。模型检查数据以进行验证,如果成功,则使用数据库。我的模型有非常大的代码并混合了验证。

exports.modelFunction = (data) => {
// validation data ...
// working with the database
}

有了新的修复,我很难阅读代码。
我决定创建一个 utils / validation / 文件夹,我将在其中处理所有可能的模型验证,是的,现在代码更具可读性

exports.modelFunction = (data) => {
  const validation = validationModel(data);
  if (!validation) return {ok: false, message: 'Validation failed'}
  // working with the database
}

我认为已经有一些其他模式坚持逻辑分离并解决像我这样的问题。所以我决定向你请教。

【问题讨论】:

  • 如果这是某种 API,请暂时忘记设计模式,而是考虑“类型”。您正在从客户端获取数据,并且您需要该数据来确认特定结构。我想在它进入模型系统之前验证它之前。模型系统应该只处理已知正确的数据。无论如何,如果这是一个 API,请考虑研究 JSON Schema,因为它比手动编写验证规则要好得多。

标签: javascript node.js design-patterns


【解决方案1】:

我认为您对使用业务逻辑进行数据验证感到困惑。

控制器是您的业务逻辑所在。它是允许模型访问的网关。

如果控制器决定用户可以访问/修改数据,那么它将将该数据传递给您的模型以进行工作。

您的模型应该验证数据并查看它是否具有使用数据库所需的所有属性。如果没有,那么它会失败并返回到您的控制器。如果发生这种情况,那么您的控制器需要执行您的业务逻辑并使用状态响应请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多