2017-03-31 15 views
0

MVCパターンを達成する最良の方法は、sails.jsです。どのように帆でMVCパターンを達成するには?

は今、私は次のような構造を持っている:私は、コントローラに要求をリダイレクトするルートを持っている:

'POST /api/user/...': {controller: 'UserController', action: 'someFunction'}, 

私のユーザモデル:

someFunction: function(req, res) { 
    let param = req.body.param; 
    let userId = req.session.userId; 
    userService.someFunction(userId, param, function (result) { 
     return res.json({result}); 
    }); 
}, 

module.exports = { 
    ... 
    attributes: {...} 
} 

私は、コントローラを持っています

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)メソッドはBluebirdの約束を返します。これは非同期/待機でうまくいきます。
+0

ありがとうございました。私はこれらを心に留めようとします。 ;) – VanBubuu

関連する問題