如何在节点中发送多个响应?

时间:2018-05-14 08:37:15

标签: javascript node.js jwt

我的nodejs中有一个signin方法,用于在成功登录后使用电子邮件和密码等用户信息响应前端(reactjs)。现在我也实现了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 :(得分:0)

而不是res.json(user [0]);和res.send({token});你可以这样做res.json({user:user [0],token:token});

答案 1 :(得分:0)

您发送的回复次数如下

$output = $crawler->filterXpath('//a[@class="pdt_title"]/text()')->extract(array('_text'));

您将不会得到 res.json(user[0]); res.send({ token }) 的第二个回复,因为该程序将发送第一个响应并将考虑其完成的工作。

您可以通过制作一系列回复一次发送多个回复。在客户端,只需迭代响应即可获得所需的密钥参数。

token