2017-03-31 65 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