2017-12-18 1 views
0

Ich habe eine API mit Express erstellen. In meiner Routen-Datei Ich habe:Nodejs, Express, Routen

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

api.getBalances, auf einem Parameter abhängig genannt durch Post schicken „Fahrzeug“ wird zuerst, welches das richtige Controller zu laden und seine getBalances Methode aufzurufen, in Beispiel:

getBalances ist nicht der einzige Zugangspunkt, den ich habe, also frage ich mich, ob es möglich ist, eine "globale" Methode aufzurufen, die Aufruf für jeden Einstiegspunkt ist, auf diese Weise würde ich nicht das richtige identifizieren müssen Controller für jede Methode, aber für die globale Methode.

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

2

Verwenden Sie eine vorläufige Middleware, die ausgeführt wird, bevor Sie eine API-Route hinzufügen. Beispiel:

// 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. 

    });