2013-08-07 7 views
9

sails.jsで標準メソッドを再定義してコントローラを作成すると、このコントローラのデフォルトの親メソッドをどのように呼び出すことができますか?sails.jsコントローラでsuperメソッドを呼び出す

module.exports = { 
    create: function(req, res) { 
     //test some parameters 
     if (condition) { 
      //call regular super method, proceed as usual 
      //_super(); <- how to do this? 
     } else { 
      //do some other things 
     } 
    } 
}; 
+1

このデフォルトの親メソッドはどこにありますか? 'create'コントローラルートを定義するだけで、ここで何かを上書きしているようには見えません。 – voithos

+0

Sails.jsは、コントローラ内のcreateメソッドの独自の実装を提供します。定義しなければ、通常どおり動作します。モデルを作成してDBに保存します。問題は、このデフォルトの実装を呼び出す方法です。 – alevkon

+0

これはあなたがこれを理解したことがありますか? – bearfriend

答えて

8

更新:セール> = v0.10.xため、あなたはデフォルトの実装(青写真)にアクセスしたい場合など、the comment below

@のnaor-BITONから

を見ますv0.9.3の場合、next()(コントローラの3番目の引数)を呼び出すことができます。これは、SailsがミドルウェアのExpress/Connectコンセプトに基づいているため、物事を連鎖させることができます。

next()は、その下に青写真のないアクションに対してデフォルト404ハンドラ()を呼び出す方法であるため、この動作は後のバージョンで変更される場合があります。

青写真の使用に興味があり、事前にロジックを実行している場合は、コントローラーのアクションを未定義のままにして、あらかじめ実行される1つ以上のポリシーを使用することをお勧めします。

+0

ありがとうマイク、私はポリシーをチェックアウトします。 コントローラのドキュメントでnext()を使用することについて、なぜ言及していませんか? – alevkon

+2

ところで、期待どおりに動作しません。空のコントローラを使用すると、POSTリクエストによってモデルが正常に作成されます。しかし、私はこのような何かを使用すると何も起こらず、空の応答が返されます。 'module.exports = { create:function(req、res、next){ next(); } }; ' – alevkon

+1

これはもはやセール.10では機能しません。したがって、ポリシーは本当にこれを処理する最も良い方法ですか? – OneHoopyFrood

関連する問題