如何在帆中实现 MVC 模式?
How to achieve MVC pattern in sails?
我想知道实现 MVC 模式的最佳方法是 sails.js。
现在我有以下结构:我有一个将请求重定向到控制器的路由:
'POST /api/user/...': {controller: 'UserController', action: 'someFunction'},
我的用户模型:
module.exports = {
...
attributes: {...}
}
我有控制器:
someFunction: function(req, res) {
let param = req.body.param;
let userId = req.session.userId;
userService.someFunction(userId, param, function (result) {
return res.json({result});
});
},
并且在 userService 中我有操作数据库的方法,例如:
someFunction: function(userId, param, callback){
User.findOne(userId).exec(function (err, user){
if (err) {
callback(false);
} else {
// find the user's additional info
User.update({name: param}, { ... })
}
我真正的问题是,这是一个值得遵循的好模式,还是我走错了路。
感谢您的任何回复。
注意:这个问题的答案可以基于意见。这是我的看法。
Sails 项目以 MVC 模式构建。模型 (api/models
)、控制器 (api/controllers
) 和视图 (views
) 有单独的文件夹。
您在服务中使用数据库方法是正确的。
超过一个控制器操作可能需要的任何东西都应该进入服务。
其他想法:
- 处理单个模型的任何逻辑都应该在该模型中
- 更喜欢在数据库级别应用约束和外键
- 使用Node.js v7.6+,可以使用
async/await
。 Sails(水线)方法 return Bluebird 承诺与 async/await. 配合良好
我想知道实现 MVC 模式的最佳方法是 sails.js。
现在我有以下结构:我有一个将请求重定向到控制器的路由:
'POST /api/user/...': {controller: 'UserController', action: 'someFunction'},
我的用户模型:
module.exports = {
...
attributes: {...}
}
我有控制器:
someFunction: function(req, res) {
let param = req.body.param;
let userId = req.session.userId;
userService.someFunction(userId, param, function (result) {
return res.json({result});
});
},
并且在 userService 中我有操作数据库的方法,例如:
someFunction: function(userId, param, callback){
User.findOne(userId).exec(function (err, user){
if (err) {
callback(false);
} else {
// find the user's additional info
User.update({name: param}, { ... })
}
我真正的问题是,这是一个值得遵循的好模式,还是我走错了路。
感谢您的任何回复。
注意:这个问题的答案可以基于意见。这是我的看法。
Sails 项目以 MVC 模式构建。模型 (api/models
)、控制器 (api/controllers
) 和视图 (views
) 有单独的文件夹。
您在服务中使用数据库方法是正确的。
超过一个控制器操作可能需要的任何东西都应该进入服务。
其他想法:
- 处理单个模型的任何逻辑都应该在该模型中
- 更喜欢在数据库级别应用约束和外键
- 使用Node.js v7.6+,可以使用
async/await
。 Sails(水线)方法 return Bluebird 承诺与 async/await. 配合良好