[英]Express req.query becoming null
我有以下功能,其目的是清除Restful api的get參數:
var clean_query = function(){
return function(req, res, next){
console.log(req.query)
// Do stuff
next();
}
}
真正奇怪的是,當我嘗試此功能時,這是我在控制台中看到的內容:
✔ Express server listening on port 3000 in development mode
✔ MongoDB connection done.
✔ Server launched
{ param1: 'toto', param2: 'titi' }
/Users/... console.log(req.query)
^
TypeError: Cannot read property 'query' of null
錯誤消息非常清楚:它告訴我req為空。...但是,如果您檢查控制台輸出,則可以看到console.log(req.query)正在將內容輸出到控制台,因此實際上它不是空的。
你知道我的錯誤嗎?
編輯:我的路線處理:
app.get(uri, clean_query(), get_list_func(schema));
編輯2:我的中間件:
app.use(express.logger('dev'));
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.urlencoded());
app.use(express.json());
app.use(expressValidator());
app.use(express.cookieParser('secret'));
app.use(express.session( {
store : MongoStore( { db : 'dbtest' } ),
key : 'sessionid',
cookie : { httpOnly : false },
secret : 'secret'
}, function() {
app.use(app.router);
}));
app.use(passport.initialize());
app.use(passport.session());
編輯3:奇怪的是,如果我從功能參數中刪除下一個,沒有更多錯誤,但是我不能使用那樣的功能,因為我需要將其與其他控制器鏈接起來。
編輯4:哇,似乎該函數被調用了兩次。。。第一次調用req可以,第二次為null。 它必須與next()有關。
在定義要返回的函數的上下文中,未定義“ req,res,next”。 因此,預計要求將為空。
您不需要在clean_query
返回一個函數。 您可以按照以下方法將clean_query
定義為中間件函數,以解決此問題。
var clean_query = function(req, res, next){
console.log(req.query)
// Do stuff
next();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.