2017-03-02 3 views
0

Ich möchte eine Middleware für die Validierung von Anforderungen basierend auf einer Raml-Datei verwenden.
Was mein Code wie folgt aussieht:Expressjs - Verwenden Sie Middleware in Middleware

// require 
let resources = require('osprey-resources'); 
let errorHandler = require('request-error-handler'); 
let handler = require('osprey-method-handler'); 

// create express instance 
let app = express(); 

// ramlObj obtained by raml2obj.parse(myPath).then() 
let router = resources(ramlObj.resources, 
    function (method, path) { 

     // get the method type : get/post/etc 
     let methodType = method.method.toUpperCase(); 

     // provide a function (controller) for this path 
     return controllers.provideController(methodType, path); 
    } 
); 

// osprey-router middelware , created by osprey-resources 
app.use('/v1', router); 

// error Handler middelware 
app.use(errorHandler(responder, DEFAULT_LANGUAGE, customMessages)); 

// What I want: 

// routes middelware 
app.use('/v1', custom_middleware(method, methodType, path), router); 

wo custom_middleware Verwendung osprey-method-handler innen mit allen Parametern ich ihm zur Verfügung gestellt. Ich habe versucht, ohne Erfolg verbinden

Antwort

0

Für Ihr Beispiel benötigen Sie eine Teilfunktion verwenden req, res und next, damit Ihre custom_middleware Funktion gesendet werden.

ein Beispiel unter Verwendung lodash:

// Route 
app.use('/v1', _.partialRight(custom_middleware, method, methodType, path), router); 

// Function 
custom_middleware(req, res, next, method, methodType, path) { 
    ... 
} 
+0

Vielen Dank für Ihre Antwort. Ich weiß, dass lodash ideal für funktionale Programmierung ist, also werde ich es versuchen. – jy95

+0

Nur eine Frage, verwenden Osprey-Methode-Handler in seinem Code next() aufrufen .... Also, was passiert, wenn custom_middleware muss nicht als nächstes() (aber verlassen auf Osprey-Methoden-Handler)? – jy95

+0

gerade getestet ..., die nächste Middleware (Router) kann nicht funktionieren, wenn ich das Ergebnis von osprey-method-handler result nicht erhalte ... – jy95

Verwandte Themen