2017-03-31 18 views
0

我想知道什么是实现MVC模式的最佳方式是s​​ails.js。如何在风帆中实现MVC模式?

现在我有以下结构:我有将请求重定向到所述控制器的路由:

'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}, { ... }) 
} 

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

感谢您的任何回应。

+0

更好的问题是,你想达到什么目的?为什么你想要MVC?还有其他的选择。你必须确定需求并从那里开始。 – adpro

+0

我试图在我的代码中实现一个结构。 MVC对我来说是最熟悉的,但我不确定我是否正确地做了风帆。这个项目将会非常大,所以我试图以最好的方式展望我的代码,所以我对任何类型的结构都是开放的,不仅仅是MVC。 – VanBubuu

回答

0

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

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

你在服务中使用数据库方法做正确的事情。
超过一个控制器操作可能需要的任何内容都应该投入服务。

其他的想法:

  • 与一个单一的交易模式应该是在这个模型中
  • 喜欢在数据库级应用约束,外键以及
  • 随着Node.js的任何逻辑v7.6 +,您可以使用async/await。 Sails(Waterline)方法返回与异步/等待一起运行良好的蓝鸟许诺。
+0

谢谢你的回答。我会尽量记住这些。 ;) – VanBubuu