javascript - 如何在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
任何帮助,将不胜感激。
解决方案
有几种方法可以做到这一点。第一种方法是让第二个请求传入用户名。
但是如果您需要在服务器上维护一个变量并在请求之间使用它,只需将它放在处理程序之外。像这样的东西:
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 和其他身份验证机制。
但是,如果您只想在几个不同的请求中共享一个变量,只需将变量放在全局范围内(或两个处理程序都可以读取它的任何地方。)
推荐阅读
- widget - WidgetKit 中的地图快照不调用 MKMapSnapshotter.start 的 completionHandler 回调
- python - 二进制数据被写为字符串文字 - 如何将其转换回字节?
- python - selenium Web Driver 不返回 Wikipedia 表
- swift - 如何以 stateobject 作为参数初始化视图?
- javascript - 是否可以通过 json 共享一个 easel.js 形状实例?
- google-sheets - Google表格根据条件格式自定义公式突出显示行
- python - 如何将 dict 和 get 方法放在 f 字符串中?
- content-security-policy - 在 HTML `meta`-tag 中使用 `report-to` 配置 Content-Security-Policy (CSP) 报告
- discord.py - Discord.py 服务器状态在我使用时不起作用
- python - 如何使用 pytorch 为 CNN 制作自定义数据集?