2017-12-18 15 views
0

私はexpressを使ってapiをビルドしました。私のルートに私がしたファイル:Nodejs、Express、routes

app.route('/getBalances') 
     .post(api.getBalances); 

api.getBalances、パラメータに応じてポストを介して送信する「車両」と呼ばれるロードし、実施例では、そのgetBalancesメソッドを呼び出すために適切なコントローラである第一の取得:

var controller = commonModel.getController(query.vehicle.toLowerCase()); 
controller.getBalances(); 

getBalancesは私が持っている唯一のエントリポイントではありませんので、すべてのエントリポイントを呼び出す「グローバル」メソッドを呼び出すことが可能かどうか疑問に思っていました。コントローラは各メソッドではなく、グローバルメソッドで実行されます。

ご協力いただきありがとうございます。

答えて

2

apiルートを追加する前に実行される予備のミドルウェアを使用してください。例:

// This middleware has to be added first. 
app.use(function(req, res, next) { 

    var query = req.query; // or `req.body`, whatever you like 
    if (query && query.vehicle) { 
    req.controller = commonModel.getController(query.vehicle.toLowerCase()); 
    } 

    next(); // delegate request to the next routes 

}); 

// Now add specific api middlewares. 
app.route('/getBalances') 
    .post(function(req, res) { 

    var controller = req.controller; // we've populated this earlier 
    res.send(controller.getBalances()); 

    }); 

app.route('/anotherMethod') 
    .post(function(req, res) { 

    var controller = req.controller; 
    // etc. 

    }); 
関連する問題