在nodeJS中传递变量

时间:2019-06-27 09:47:46

标签: node.js express ejs

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

我有路由登录,其中有2个参数,即key和callbackURL:

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')
  }
})

因此,如果键匹配,则呈现带有空响应和callbackURL的index.ejs。当用户尝试登录时,是否可以稍后在“ / submit”中传递该callbackURL? 提交代码:

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' })
      }
    })
})

1 个答案:

答案 0 :(得分:0)

它在另一个函数中,因此该变量不可用。

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

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

或者,您可以将其存储在一个会话中,但这会带来比赛条件的风险。