函数是否可以访问调用它的任何地方的整个范围

时间:2017-06-30 00:18:56

标签: javascript node.js

在nodejs路由器中,我正在做很多关于会话的事情。在Ruby on Rails中,我可以把它带到自己的类session_helper,然后在路由控制器中我只会说这样的include sessions_helper然后突然间它可以访问所有数据目前在课堂上可用,我可以session.renew

现在只有我看到的方法是创建一个函数,然后传递req& res作为路由器中的参数。

有没有办法简单地导入类,然后开始使用它的方法,这要求他们可以访问这个范围。

1 个答案:

答案 0 :(得分:0)

在具有常规会话功能的nodej中,当前请求的会话将在req.session中。由于对请求进行操作的所有代码都来自可以访问req对象的请求处理程序,因此您只需将reqreq.session传递给任何想要操作的代码属于当前请求的会话。这就是通常在nodejs中完成的事情。

目前尚不清楚你的意思是"导入类然后开始使用它的方法)。如果要创建一个在会话上运行的类,可以简单地创建一些中间件,例如:

app.use((req, res, next) => {
    req.mySessionObject = new mySession(req.session);
    next();
});

然后,req.mySessionObject将成为您的所有请求中的会话对象(使用当前请求的相应会话进行初始化),您可以随时随地访问req.mySessionObject以及在该对象上创建的任何方法。您仍然必须将reqreq.mySessionObject传递给任何想要使用会话对象的函数,或者在路由处理程序范围内声明该函数,然后您可以直接访问req任何时候的对象。

如果这不能涵盖您要描述的内容,请向我们展示您希望能够执行的操作的代码示例。