首页 > 解决方案 > 我应该在 Node-Express 应用程序中的控制器和模型之间有一个层吗?

问题描述

我有一个 Express 应用程序,我在其中使用 Sequelize 与我的 MySQL 数据库进行交互。模型只表示具有相应字段的数据库表,不包含任何附加逻辑。我希望我的控制器不要太胖,为此我认为我应该在其之间有一个层,其中包含所有逻辑并使用模型与数据库进行交互。

这是一个好习惯吗?如果我应该称之为这个层,它应该包含什么?

提前致谢!

标签: mysqlnode.jsexpressmodel-view-controllersequelize.js

解决方案


首先,很好的问题。

其次,我会这样做:

在您的模型中,假设您有一个用户模型 users.js。

在您的用户/数据库界面的那个模型中,在您之后

const User = module.exports = <sql declaration and model reference>;

您可以像这样创建其他模块导出:

module.exports.getUserById = function(id, callback){
    <Sequelize logic goes here>
};

这本质上是用于处理例程的模型类的中间件/控制器。

您可以通过导入用户模型然后调用导出的模块来使用它:

const User = require("../models/users")

然后是时候调用你的函数了:

User.getUserById(id, function(err, user) {
    <some logic with regard to your user>
});

推荐阅读