Доброй ночи уважаемые коллеги. Помогите пожалуйста разобраться с middleware в express и передачей результат работы функции на другой участок посредством next().
Я не очень понимаю как это работает. Из документации понял, что мы назначаем пре-хукер для какого-то запроса урл (например: /user) .
Допустим у нас вызывается какой-то шаблон. Перед рендером шаблона выполняется мидлвер - и передается next() - результат дальше.
На практике я не понимаю вообще. Пытаюсь сделать вот что:
module.exports = function (server, db) {
'use strict';
var module = {};
module.auth = function (req, res, next) {
var options = {
criteria: { login : req.body.login }
},
user;
user = User.load(options, function (err, user) {
if (err) { return next(err); }
if (!user) { return next(new Error('Failed to load User ' + options.criteria)); }
req.user = user;
user = user;
next();
});
console.log(user);
if (req.body.password === user.password) {
console.log('Совпадает');
} else {
console.log('Неправильный пароль');
}
};
module.pickle = function(err, next) {
console.log('CATCH');
next();
};
return module;
};
У меня есть результат выборки с базы в методе user.load (данные там точно есть). Я пытаюсь передать эти данные дальше в следующую функцию через next() но ничего не передается и CATCH не выводится, к сожалению.
Также, почему-то не присваивается сам результат user - в переменную user, которая объявлена выше. (Консоль выводит - undefined). Есть подозрения, что колбек выборки из бд исполняется в другом модуле, который не знает о моей переменной и следовательно ей ничего не присваивает.
Если это так, то как мне правиль передать данные дальше в следующие функции, скажем, для валидации?
Заранее спасибо за любую помощь.