Node.js expressjs的全局变量

Node.js expressjs的全局变量,node.js,express,Node.js,Express,我试图在函数之间传递数据,这些函数可能会根据请求而改变。有没有办法在全球范围内存储此类详细信息 我的想法是有一个authCheck函数,当有人访问任何路由时可以处理它。然后,该函数将检查它们的令牌是否有效。如果是,程序将继续,如果不是,则停止。如果令牌有效,我想为其ID设置一个变量,该变量无需在每个函数中不断执行SQL查询即可访问。您可以创建一个始终运行的use函数,并将数据附加到req,如下示例: app.use(function (req, res, next) { // Just

我试图在函数之间传递数据,这些函数可能会根据请求而改变。有没有办法在全球范围内存储此类详细信息


我的想法是有一个authCheck函数,当有人访问任何路由时可以处理它。然后,该函数将检查它们的令牌是否有效。如果是,程序将继续,如果不是,则停止。如果令牌有效,我想为其ID设置一个变量,该变量无需在每个函数中不断执行SQL查询即可访问。

您可以创建一个始终运行的
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}); 
});

您可以创建一个始终运行的
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}); 
});

听起来像你想要使用。听起来像你想要使用。什么时候运行
app.use
呢?它是中间件,它总是比其他中间件先运行(参考:)我把
app.use
放在我的根js文件中,但它似乎没有运行请看参考页上的示例。它显示了一个基本的记录器。这就是它的工作原理。我的只不过是对它的一种改编。没关系,让它工作起来,需要把它放在app.use(app.router)上面什么时候运行
app.use
run?它是中间件,总是比其他中间件先运行(参考:)我将
app.use
放在我的根js文件中,但它似乎没有运行查看参考页上的示例。它显示了一个基本的记录器。这就是它的工作原理。我的只不过是对它的一种改编。没关系,让它工作起来,需要把它放在app.use(app.router)上面