我有以下的功能,目的將是清潔獲得參數的寧靜API:快遞req.query成爲空
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爲null ....但是,如果你檢查控制檯輸出,你可以看到的console.log(req.query)被outputing內容到控制檯,所以它在現實中不是空的。
你知道什麼是我的錯誤嗎?
編輯:我的路線處理:
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是好的,第二次它是空的。它必須與next()有關。
可以顯示處理調用'clean_query'的路由的代碼嗎? –
我用這個信息編輯我的答案。 –
您是否使用任何其他自定義中間件? –