首页 > 解决方案 > 如何在node.js的同一个js文件中的两个post方法之间共享变量?

问题描述

我有一个 post 方法可以从表单中获取一些数据。然后我必须呈现另一个具有不同发布路线的表单。我想在新的 post 方法中使用从第一个 post 方法获得的变量。

我有一个 post 方法来获取变量username

router.post('/', function(req, res, next) {
  var username = req.body.username
  res.render('add_user', {username: username})
});

现在我想在不同的 post 方法中使用它:

router.post('/add_user', function(req, res) {
  // I want to use the username variable here
})

注意:两个 post 方法都在同一个文件中,名为index.js

任何帮助,将不胜感激。

标签: javascriptnode.js

解决方案


有几种方法可以做到这一点。第一种方法是让第二个请求传入用户名。

但是如果您需要在服务器上维护一个变量并在请求之间使用它,只需将它放在处理程序之外。像这样的东西:

let globalUsername= "";
router.post('/', function(req, res, next) {
  var username = req.body.username;
  globalUsername = username;
  res.render('add_user', {username: username})
});

router.post('/add_user', function(req, res) {
   res.send(globalUsername);
})

虽然不是一个很好的解决方案;除非您只有 1 个用户访问您的网站。如果您有多个用户,那么您需要一种方法来识别他们。常见的方法包括客户端在每个请求上传递用户名(或代表用户的令牌)或 cookie 等。查看会话、cookie、JWT 和其他身份验证机制。

但是,如果您只想在几个不同的请求中共享一个变量,只需将变量放在全局范围内(或两个处理程序都可以读取它的任何地方。)


推荐阅读