5

複数の res.render 関数があるため、大きな if else ステートメントで全体をラップしていることを知っています。

このようなことを行うにはどうすればよいですか。これにより、残りのルートが実行されないようにする必要があります。

if(req.params.url === undefined){
    res.render('layout');
    return;
}

また:

if(req.params.url === undefined){
    res.render('layout');
    next();
}

ただし、両方ともその下の残りのコードを実行するため、ヘッダーが既に送信されます。

現在、私のコードは次のようになっています。

exports.activate = function(req, res){
    var hash = req.params.hash;

    if(hash === undefined){
        res.render('activation');
        next();
    } else {
           // Do stuff with hash
           res.render('activateOne', {hash: hash});
    }

}
4

1 に答える 1

3

これについては100%確信はありませんが、res.render()の後で関数を終了したい場合は、を使用できると思いますreturn。これにより、現在の関数の残りの部分が実行されなくなります。

簡単なAJAXの例(クライアント側は知っていますが、非同期関数であり、同様に動作するはずです):

$.ajax({
   url: 'www.google.com',
   type: 'POST',
   error: function () {
      console.log('failure');
      return 0;
      console.log('after return');
   }
})

ブラウザコンソールでこれを実行しようとすると、「失敗」ログが記録されますが、「リターン後」メッセージの前に停止します。

于 2013-03-12T21:35:04.617 に答える