如何在帆中实现MVC模式?

时间:2017-03-31 15:40:28

标签: node.js model-view-controller sails.js modularity

我想知道实现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}, { ... })
}

我真正的问题是,这是一个很好的模式,或者我走错了路。

感谢您的任何回应。

1 个答案:

答案 0 :(得分:1)

注意:对此问题的回答可以基于意见。这是我的意见。

Sails项目是以MVC模式搭建的。模型(api/models),控制器(api/controllers)和视图(views)有单独的文件夹。

你在服务中使用数据库方法是正确的 任何可能需要多个控制器操作的东西都应该进入服务。

其他想法:

  • 处理单个模型的任何逻辑都应该在该模型中
  • 更喜欢在数据库级别应用约束,外键
  • 使用Node.js v7.6 +,您可以使用async/await。 Sails(Waterline)方法返回Bluebird promises,它与async / await结合使用。