【问题标题】:how to send multiple response in node?如何在节点中发送多个响应?
【发布时间】:2018-10-23 20:47:36
【问题描述】:

我的 nodejs 中有一个登录方法,它在成功登录后使用用户信息(例如电子邮件和密码)响应前端(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
}

【问题讨论】:

  • 这看起来像是一个无效的代码。可以发minimal reproducible example吗?
  • 将两个响应合二为一。一个请求 -> 一个响应。
  • @PraveenKumar 请查看我更新的帖子。
  • 您不能在任何编程语言中多次发送响应,而只能使用 NodeJS,您可以结合 res.json({user: user[0], token: token})
  • 您显然必须使前端代码适应新的响应。不过这很简单 - 只需获取您在那里收到的适当对象的属性

标签: javascript node.js jwt


【解决方案1】:

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

【讨论】:

  • 请不要发布多个答案。相反,请单击答案下方的“编辑”按钮,然后根据需要修改答案。
【解决方案2】:

您正在发送两次响应,如下所示

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

您不会收到第二个响应token,因为程序将发送第一个响应并认为它的工作已完成。

您可以通过制作一系列响应来一次性发送多个响应。在客户端只需迭代响应以获取所需的关键参数。

response.json({user : user[0] , token : token , anyVariable : AnyData ... })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2013-07-23
    • 2021-04-20
    • 2018-01-14
    • 2021-12-22
    相关资源
    最近更新 更多