Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2015, 23:08
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 13.02.2015
Сообщений: 32

Работа с middleware next()
Доброй ночи уважаемые коллеги. Помогите пожалуйста разобраться с 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). Есть подозрения, что колбек выборки из бд исполняется в другом модуле, который не знает о моей переменной и следовательно ей ничего не присваивает.

Если это так, то как мне правиль передать данные дальше в следующие функции, скажем, для валидации?


Заранее спасибо за любую помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Front-end разработчик, работа удаленная или в офисе(Нижний Новгород), фуллтайм. VadimZharko Работа 8 29.04.2013 09:03
работа менеджером georgi Работа 1 29.03.2013 14:18
Javascript фронтенд разработчик(долгосрочная, удаленная работа) cpp Работа 11 16.09.2012 12:04
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06