2016-06-23 8 views
0

私は4つのミドルウェア機能を持っています:abcdです。要求パラメータに基づくExpressJS分岐ルート

体は値Xが含まれている場合、私は他の私は、その後cdを実行したい、そしてabを実行したいです。

私のコードは次のようになります。

app.post('/', (req, res, next) => { 
    if (req.body.X) { 
    next(); 
    } else { 
    next('route'); 
    return; 
    } 
}, a, b); 

app.post('/', c, d); 

は、このために、よりエレガントな方法はありますか?これらのルータをより読みやすくする方法(またはパッケージ)はありますか?

+0

各ミドルウェアでreq.body.xを確認し、app.post( '/'、a、b、c、d) –

答えて

1

私はこれのために2つのルートを持つ必要はないと思います。ミドルウェアabreq.body.Xを確認できます。

// Middlewares a and b 
module.exports = function(req, res, next){ 
    if(req.body.X){/* Do stuff */} // if is the middleware "a" call next() 
           // else, is "b" finish with a response i.e. res.send() 
    else next(); 
} 

// Middlewares c and d 
module.exports = function(){ 
    // Do whatever, if middleware "c" call next() else finish with a response 
} 

// Route 
app.post('/', a, b, c, d); 
関連する問題