繁体   English   中英

node.js / express.js中的变量范围

[英]Variable Scope in node.js/express.js

我现在正在使用快递/节点,我有以下内容

   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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM