@heducose

Почему код перестает работать, после выноса в отдельный контроллер?

Не понимаю, почему это код перестает работать, если я пробую его рефакторить и вынести в отдельный файл контроллер?

Работает:

router.get('/demo',
  jwt(
    { secret: process.env.SECRET }),
  function (req, res) {
    User.findById(req.user.sub, function (err, user) {
      if (err) { console.log('ERROR') }
      if (user) {
        res.send({
          eee: req.user,
          hi: 'SECRET test authorization of registered user'
        })
      } else {
        res.send('ERROR')
      }
    })
})


Не работает:

router.post('/demo', Authentication.secret)

exports.secret = function (req, res) {
  jwt(
    { secret: process.env.SECRET }),
  function (req, res) {
    User.findById(req.user.sub, function (err, user) {
      if (err) { console.log('ERROR') }
      if (user) {
        res.send({
          eee: req.user,
          hi: 'SECRET test authorization of registered user'
        })
      } else {
        res.send('ERROR')
      }
    })
  }
}
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
во-первых, потому что jwt очевидно возвращает middleware
во-вторых, внутреннюю функцию никто не вызывает
правильно так:
router.post('/demo', jwt({ secret: process.env.SECRET }),Authentication.secret)
exports.secret = function (req, res) {
    User.findById(req.user.sub, function (err, user) {
      // добавлю еще маленько хорошей практики обработки ошибок:
      if (err) {
        console.log('ERROR')
        res.send('ERROR')
        return;
      }
      res.send({
        eee: req.user,
        hi: 'SECRET test authorization of registered user'
      })
    })
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы