Как отправить несколько ответов в узле? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть метод входа в мой nodejs, который отвечает на запрос внешнего интерфейса (actjs) информацией о пользователе, такой как электронная почта и пароль, при успешном входе в систему.Теперь я также внедрил JWT.Таким образом, после входа в систему узел также отправит токен клиенту.Но я не знаю, как это сделать.Как я могу отправить два ответа одновременно?Это только отправка информации о пользователе.

Узел:

server.js

app.post('/signin', (req, res) => { signin.handleSignin(req, res, db, bcrypt, jwt)});

signin.js

const handleSignin = (req, res, db, bcrypt, jwt) => {
  const {
    email,
    password
  } = req.body;
  if (!email || !password) {
    return res.status(400).json('Incorrect form submission');
  }
  db.select('email', 'hash').from('login')
    .where('email', '=', email)
    .then(data => {
    const isValid = bcrypt.compareSync(password, data[0].hash);
    if (isValid) {
      return db.select('*').from('users')
        .where('email', '=', email)
        .then(user => {
        jwt.sign({
          user
        }, 'secretkey', {
          expiresIn: '1000s'
        }, (err, token) => {
          res.json(user[0]);
          res.send({
            token
          })
        })
      })
        .catch(err => res.status(400).json('unable to get user'))
    } else {
      res.status(400).json('wrong credentials')
    }
  })
    .catch(err => res.status(400).json('wrong credentials'))
}

module.exports = {
  handleSignin: handleSignin
}

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Вы отправляете ответы два раза, как показано ниже

  res.json(user[0]);
      res.send({
        token
      })

Вы не получите второй ответ, который является token, потому что программа отправит первый ответ и сочтет свою работу выполненной.

Вы можете отправить несколько ответов за один раз, создав массив ответов. А на стороне клиента просто повторяйте ответ, чтобы получить требуемый ключевой параметр.

response.json({user : user[0] , token : token , anyVariable : AnyData ... })
0 голосов
/ 14 мая 2018

вместо res.json (пользователь [0]); и res.send ({токен}); Вы можете сделать это как res.json ({пользователь: пользователь [0], токен: токен});

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