gpt4 book ai didi

javascript - Express.js 在动态创建的路由中传递变量

转载 作者:行者123 更新时间:2023-12-03 06:06:57 29 4
gpt4 key购买 nike

我正在从具有以下结构的 json 文件在 Express js 中创建路由

{
"/home":{
"token":"ksdjfglkas"
},
"/logout":{
"token":"ksdjfglksaudhf"
}
}

我需要能够访问路由函数内的 token 。我用来生成路线的js是

for(var endpoint in context){
var route = context[endpoint];
app.use(endpoint,
function(req,res,next){
req.token= route.token;
next();
},
require('./route-mixin'));
}

我面临的问题是route-mixin方法总是获取最后一个 token 。在这种情况下,context只是我上面添加的js文件。我如何为每条路线分别传递不同的 token 。

最佳答案

解决这个问题的方法是将循环内的内容放入闭包中。

首先让我知道问题出在哪里的是 PhpStorm IDE: mutable variable is accessible from closure

错误消息可变变量可以从闭包访问出现在第一个中间件中。本文Mutable variable is accessible from closure. How can I fix this?然后给了我使用闭包的提示。

因此,让它运行所需的一切都是改变:

   for(var endpoint in context){
var route = context[endpoint];
app.use(endpoint,
function (req, res, next) {
req.token = route.token;
next();
},
function (req, res) {
console.log(req.token);
res.send('test');
}
);
}

至:

for(var endpoint in context){
(function() {
var route = context[endpoint];
app.use(endpoint,
function (req, res, next) {
req.token = route.token;
next();
},
function (req, res) {
console.log(req.token);
res.send('test');
}
);
})();
}

我成功运行的完整示例代码:

var express = require('express');
var app = express();

var context = {
"/home":{
"token":"ksdjfglkas"
},
"/logout":{
"token":"ksdjfglksaudhf"
}
};
for(var endpoint in context){
(function() {
var route = context[endpoint];
app.use(endpoint,
function (req, res, next) {
req.token = route.token;
next();
},
function (req, res) {
console.log(req.token);
res.send('test');
}
);
})();
}

app.listen(3000);

关于javascript - Express.js 在动态创建的路由中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498999/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com