Доброго!
Не совсем ещё втянулся в прелести Node.JS, потому туплю..
В принципе, тривиальный сервер app.js
router = require('./routes'); // Каталог с роутерами
var isDebug = true; // Переменная для примера (которую и хочется передать)
var port = 666;
var app = express();
app.listen(port, function(){
console.log('SERVER STARTED AT PORT: ' + port);
});
router(app, connection, isDebug); // Передали переменую
Далее, в ./routes/index.js
var users = require('./users'); // Куда будем отсылать
module.exports = function (app, isDebug) {
app.get('/users', users.login); // <-- Вот как именно сюда передать isDebug???
};
Очередным параметром - не хочет, ругается:
Error: Route.get() requires callback functions but got a [object
Boolean]
А если далать сразу ./routes/index.js, к примеру, так:
module.exports = function (app, connection, isDebug) {
app.get('/users', function (req, res) {
if (isDebug) console.log('Trying auth...');
});
};
Всё работает, но так накопится очень много кода в ./routes/index.js, который хотелось бы разделить..
Для примера, ./routes/user.js
var login = function (req, res) {
if (isDebug) console.log('Trying auth...');
};
module.exports.login = login;
Всё, естесственно, упрощено.
Как бы это поизящнее оформить, посоветуйте, пожалуйста, коллеги?
Ответ
Один из простых вариантов добавления неких дополнительных параметров в обработку запроса - middleware. Например в корневом роутере:
router.use(function (req, res, next) {
req.yourVar = "something";
req.isDebug = true;
next();
});
или на уровне приложения
app.use(function (req, res, next) {
req.yourVar = "something";
req.isDebug = true;
next();
});
Дополнительную информацию можно найти здесь
Комментариев нет:
Отправить комментарий