首页 > 解决方案 > 在nodeJS中传递变量

问题描述

我不确定它是如何被调用的,并且通过有限的搜索我没有找到我想要的东西,所以我会解释一下:

我有路由登录,其中我得到 2 个参数,键和回调 URL:

app.get('/login*', function (req, res) {
  var adr = url.parse(req.url, true)

  var key = adr.query.key
  var callbackURL = adr.query.callbackURL

  if (key == "key123") {
    res.render('index', { resp: '', callbackURL: callbackURL })
  } else {
    res.render('error')
  }
})

因此,如果键匹配,它将使用空响应和回调 URL 呈现 index.ejs。当用户尝试登录时,有没有办法可以稍后在“/提交”中传递该回调 URL?提交代码:

app.post('/submit', function (req, res) {
  request.post({
    headers: { 'content-type': 'application/json' },
    url: <here to use callbackURL>,// <-- here
    body: { 'login': req.body.login, 'password': req.body.password },
    json: true
  },
    function (request, response) {
      if (response.statusCode == 200) {
        res.render('index', { resp: 'login succesfull' })
      } else {
        res.render('index', { resp: 'invalid login or password' })
      }
    })
})

标签: node.jsexpressejs

解决方案


它在不同的函数中,因此该变量不可用。

你需要以某种方式通过它。

您可以在渲染页面时将其传递给客户端(实际上您已经将其传递给 render 方法),然后将其放在表单中的隐藏输入中,然后在提交端点时从表单数据中读取它叫。

或者,您可以将其存储在会话中,但这将面临竞争条件的风险。


推荐阅读