2016-05-09 2 views
1

При получении и обработке параметров запроса в разных функциях маршрутизации необходимо определить одно и то же в каждой функции маршрутизации.ExpressJS: Возможно ли обмен данными между различными функциями маршрутизации для одного и того же маршрута?

router.get("/", function(req, res, next){ 

    var processed_query = process_function(req.query); 
    //do some thing based on the query string 
    console.log(processed_query); 
    next(); 
}, function(req, res, next){ 
    var processed_query = process_function(req.query); //this needs to be defined again 
    //do some different thing based on the query string 
    res.write(JSON.stringify(processed_query)); 
}); 

Хотя это и понятно, чтобы сделать это таким образом, потому что телескопы функций различны, это кажется немного излишним и против общего правила не повторяйте себе придется повторно определить такая же переменная var processed_query = process_function(req.query); для того же самого req. Есть ли (лучший) способ сделать это только один раз?

ответ

2

Вы можете сохранить свою вычисленную переменную в некотором свойстве объекта req. Например.

router.get("/", function(req, res, next){ 
    var processed_query = process_function(req.query); 
    //do some thing based on the query string 
    console.log(processed_query); 
    req.processed_query = processed_query; 
    next(); 
}, function(req, res, next){ 
    var processed_query = req.processed_query; 
    //do some different thing based on the query string 
    res.write(JSON.stringify(processed_query)); 
}); 
+0

Да, это хорошая идея; Я могу использовать сам объект req; благодаря! – Yogesch

Смежные вопросы