2013-11-24 31 views
1

我是Node和Express的新手,我不確定如何在POST路由中訪問req中間件功能。我需要將它作爲參數傳遞嗎?有跡象表明,進入req在這條航線其他中間件的功能,但它不被通過。總體來說,我想我很困惑,如何req作品...節點 - 如何訪問POST路由中間件中的請求

,我指的功能是helpers.createPermissions()

我的路線

app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions(req), oauth2.server.decision()); 

的功能

exports.createPermissions = function(req) { 
    console.log(req); 
}; 

的錯誤

ReferenceError: req is not defined 

回答

3

中間件總是會得到三個參數:reqresnext

所以中間件應該是這樣的:

exports.createPermissions = function(req, res, next) { 
    console.log(req); 
    // TODO: make sure you eventually call either `next` or send back a response... 
}; 

而且你可以使用它像這樣:

app.post('/oauth/authorize/decision', login.ensureLoggedIn('connect/signin'), helpers.createPermissions, oauth2.server.decision()); 

在你看到的中間件被稱爲一個功能的情況,那是因爲你」不要調用中間件本身,而是一個函數返回中間件函數。例如:

var myMiddlewareWrapper = function() { 
    // return the actual middleware handler: 
    return function(req, res, next) { 
    ... 
    }; 
}; 

app.get('/', myMiddlewareWrapper(), ...); 

這通常是通過額外的選項來中間件處理程序(像login.ensureLoggedIn())。

+1

+1,值得一提的是,如果你的中間件有一個'4',它被認爲是'(err,req,res,next)'。 –

+0

@maček爲了不讓事情複雜化,我放棄了那個,但你絕對正確:) – robertklep

相關問題