2013-05-14 9 views
10

私はNodejでRestifyを使用していますが、スタック内の次のミドルウェアに制御を戻す正しい方法について質問があります。私は "次のミドルウェアをスタック"と言うとき、私が正しいフレーズを使用していることを願っています。ミドルウェアを復元する - スタック内の次のミドルウェアを正しく呼び出す

基本的に、私のコードは次のようになります。

//server is the server created using Restify 
server.use(function (req, res, next) { 
    //if some checks are a success 
    return next(); 
}); 

を今、私が知りたいのコードはreturn next();あるべきであるか、スタック内の次に制御を渡すだけnext();をすべきですか?

私は両方のコードが正常に制御を渡し、期待通りにデータを返すことを確認しました。私が知りたいのは、2つの間に違いがあり、別のものを使用する必要がある場合です。

答えて

17

違いはありません。 Restifyのソースを見てみましたが、ミドルウェアの戻り値では何もしないようです。

if (someCondition) 
    next(); 
res.send(...); // !!! oops! we already called the next middleware *and* we're 
       //  sending a response ourselves! 
+1

こんにちは、あなたが次のコールバックをやって何を 'に私を答えることができます:それは、このようなエラーを防ぐのに役立つかもしれない

// using this... if (someCondition) { return next(); } res.send(...); // instead of... if (someCondition) { next(); } else { res.send(...); }; 

return next()を使用する理由は、純粋に利便性の問題ですhttpハンドラ? server.get( '/'、function(req、res、next){res.end();}) '次も呼び出すべきでしょうか? –

+1

@vp_arth応答を一方向に返すことでリクエストを終了しない場合、 'next()'を使って次のルート/ミドルウェア/(エラー)ハンドラに制御を渡すことができます – robertklep