mysql - 我应该在 Node-Express 应用程序中的控制器和模型之间有一个层吗?
问题描述
我有一个 Express 应用程序,我在其中使用 Sequelize 与我的 MySQL 数据库进行交互。模型只表示具有相应字段的数据库表,不包含任何附加逻辑。我希望我的控制器不要太胖,为此我认为我应该在其之间有一个层,其中包含所有逻辑并使用模型与数据库进行交互。
这是一个好习惯吗?如果我应该称之为这个层,它应该包含什么?
提前致谢!
解决方案
首先,很好的问题。
其次,我会这样做:
在您的模型中,假设您有一个用户模型 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>
});
推荐阅读
- generics - Rust 需要帮助重构过多的函数
- javascript - 如何单击量角器中被阻止的元素?
- ruby-on-rails - 单击时更改 Bulma 按钮的颜色
- reactjs - 如何获取文档 ID 和文档数据?
- mysql - 获取一个没有通话记录的随机客户,并按他们未接听的电话数量排序
- spring - Spring WebClient Post 方法正文
- visual-c++ - 在 MSVC 2017 上使用 _addcarry_u64 时结果错误
- php - 当我在 laravel 查询上运行代码时,我变得乱码
- database - 如何在 tsql 的循环中转到下一列
- autodesk-forge - 如何在 3D 视图中查看 dwg - 客户问题