expressjs的全局变量

时间:2013-10-11 08:47:29

标签: node.js express

我正在尝试在可能根据请求更改的函数之间传递数据。有没有办法全球存储这些细节?

我的想法是拥有一个authCheck功能,当有人访问任何路由/*时,该功能会被处理。然后该函数将检查其令牌是否有效。如果是,程序继续,如果不是,那么它就在那里停止。如果令牌有效,我想为他们的ID设置一个可以访问的变量,而不必在每个函数中不断地进行SQL查询。

1 个答案:

答案 0 :(得分:4)

您可以创建始终运行的use函数并将数据附加到req,如下例所示:

app.use(function (req, res, next) {
    // Just an example...
    db.query('SELECT * FROM tokens WHERE dat = ?', [req.cookies.token], function (err, result) {
        // Check token...
        if (err || results.length === 0) {
            next(err || 'Invalid token');
        } else {
            // Set in req obj for other functions to access
            req.token = results[0].dat;
            next();
        }
    });
});


app.get('/', function (req, res) {
    // Example render template with token attached...
    res.render('test', {token: req.token}); 
});