Невозможно добавить токен jwt в ответ node.js - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в экосистеме javascript и хочу добавить токен jwt в ответ от этого маршрутизатора регистрации:

router.post('/register', (req, res)=> {

    User.findOne({email: req.body.email})
     .then(user => {
        if(user) {
            return res.status(400).json({error: 'Email already exists'});
        } else {                    
            const newUser = new User({
                username: req.body.username,
                email: req.body.email,
                password: req.body.password
            });

            bcrypt.genSalt(10, (err, salt)=> {
                bcrypt.hash(newUser.password, salt, (err, hash)=> {
                    if (err)  throw err;
                    newUser.password = hash;
                    newUser.save()                      
                      .then(user => res.status(200).json(user)) //<=Problem is here
                      .catch(err => console.log(err));
                } )
            })
        }
     })

});

Фрагмент jwt (который отлично работает на longin роутере):

        const payload = {
            username: user.username
        }

        //sign token
        jwt.sign(
            payload, 
            keys.secretOrKey, 
            { expiresIn: 3600}, 
            (err, token)=> { 
                res.json({
                    success: true,
                    token: 'Bearer '+ token,
                    username: username
                });
            });

Проблема в том, что я не знаю, как добавить фрагмент в заголовок ответа. Когда я добавляю его после .then(user =>, я получаю ошибку SyntaxError: Unexpected token const.

Как я могу это сделать?

1 Ответ

0 голосов
/ 10 сентября 2018

Звучит так, будто вы не завернули фрагмент jwt в фигурные скобки. Без них функция стрелки, в которой возникает проблема, принимает только одно выражение. Вместо этого вставьте фрагмент jwt в следующий фрагмент.

bcrypt.genSalt(10, (err, salt)=> {
    bcrypt.hash(newUser.password, salt, (err, hash)=> {
    if (err)  throw err;
    newUser.password = hash;
    newUser.save()                      
        .then(user => {
          res.status(200).json(user);
          <JWT_Snippet_here>
        }
        .catch(err => console.log(err));
    })
})

Здесь вы можете увидеть, как определяется синтаксис функций стрелок. Следующая цитата показывает наиболее важную часть.

(param1, param2,…, paramN) => {операторы}

(param1, param2,…, paramN) => выражение

Для использования списка утверждений необходимы фигурные скобки. Произошла ошибка, произошедшая из-за того, что ваш движок JavaScript ожидал одно выражение, но вместо этого нашел список операторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...