gpt4 book ai didi

javascript - node.js/express.js 中的变量作用域

转载 作者:行者123 更新时间:2023-11-30 05:43:54 25 4
gpt4 key购买 nike

我现在正在使用 express/node 并且我有以下内容

   app.use(useridDetect);
function useridDetect (request, response, next) {
var myurl = url.parse(request.url);
if (myurl.pathname === "/cookie") {
var i = request.url.indexOf('?');
query = request.url.substr(i+4, 32);
//set userid
next();
} else {
next(); // keep the middleware chain going
}
}


app.use(require('./middleware/im')({
userid: query,
maxAge: 30 * 1000,
reapInterval: 20 * 1000,
authentication: require('./libs/authentication/' + AUTH_LIBRARY)
}));

现在它说查询在第二部分未定义(很明显我不能这样做......)但是我怎样才能让第二个函数在不使用全局变量的情况下访问该变量?因为我会有很多人使用这个脚本,所以太多的全局变量可能不是一个好主意。

最佳答案

您定义的每个中间件都让您有机会读取请求信息并修改请求/响应对象。与其设置一个名为 query 的变量,不如向请求对象添加一个 query 字段,然后让 middleware/im 的请求处理程序在请求中查找该字段对象。

但是,请注意 Express 已经为您解析查询字符串[1],因此您甚至不需要 userIdDetect 中间件函数。只需让 middleware/im 的请求处理程序查看 `req.query 中的对象,它应该已经包含一个名为任何查询字符串参数命名的字段。

[1] http://expressjs.com/api.html#req.query

关于javascript - node.js/express.js 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148547/

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