коллбэк 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 нельзя отказаться? |
Долго мучаясь я нашел ответ. Оказывается дело было вовсе не в коллбэке. Эта конструкция работает хорошо. Удалите или закройте тему.
|
Часовой пояс GMT +3, время: 20:05. |