Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2015, 10:42
Ame Ame вне форума
Новичок на форуме
Отправить личное сообщение для Ame Посмотреть профиль Найти все сообщения от Ame
 
Регистрация: 09.12.2015
Сообщений: 2

коллбэк multiparty form.parse не может изменить внешнию переменную
Пишу простенькую авторизацию через сессии и использую переменную req.session. Вот код:
router.route "/"
.get (req, res, next) ->
    res.render "auth"
.post (req, res, next) ->
    form = new multiparty.Form
    form.parse req, (err, fields, files) ->
        next err if err
            login = fields.login[0]
            pass = fields.pass[0]
            User.authorize login, pass, (err, user) ->
                if err
                    if err instanceof AuthError
                        return res.send err.message
                    else
                        return next err
                req.session.user = user._id
                res.send "success"

А вот код который загружает и передает клиенту данные авторизованному юзеру
module.exports = (req, res, next) ->
  req.user = res.locals.user = null
  if not req.session.user then return do next
  User.findById req.session.user, (err, user) ->
    next err if err
    req.user = res.locals.user = user
    do next


Проблема в том что в коллбэке form.parse, req.session.user = user._id не запоминает user._id. При этом если отказаться от multiparty и FormData(на клиенте), и использовать експрессовский bodyParser. Вот так:
router.route "/"
.get (req, res) ->
    res.render "auth"
.post (req, res, next) ->
    login = req.body.login
    pass = req.body.pass
    User.authorize login, pass, (err, user) ->
        if err
            if err instanceof AuthError
                return res.send err.message
            else
                return next err
        req.session.user = user._id
        res.send "success"


То все работает идеально. Так как же все таки быть если от multiparty нельзя отказаться?

Последний раз редактировалось Ame, 09.12.2015 в 10:54.
Ответить с цитированием
  #2 (permalink)  
Старый 09.12.2015, 18:31
Ame Ame вне форума
Новичок на форуме
Отправить личное сообщение для Ame Посмотреть профиль Найти все сообщения от Ame
 
Регистрация: 09.12.2015
Сообщений: 2

Долго мучаясь я нашел ответ. Оказывается дело было вовсе не в коллбэке. Эта конструкция работает хорошо. Удалите или закройте тему.
Ответить с цитированием
Ответ



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

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