Express.js – 如何修改路由中的app.localsvariables

我有一个node.js项目。 以下代码是我的app.js文件的一部分。 我正在从数据库进行查询,并将结果存储在名为“Cats”的全局variables中。 我正在使用这个variables来显示网站边栏上的类别。 我不认为它相关,但我使用翡翠作为模板引擎。

var app = express() var query = "SELECT * FROM findadoc.categories"; client.execute(query, [], function(err, results) { if(err) { res.status(404).send({meg: err}); } else { app.locals.cats = results.rows; } }); 

在其中一条路线中,我允许用户将其他类别添加到数据库。 我需要的是为'apps.locals.cats'variables更新一组新的类别。 反正我有修改这个在我的路线? 我尝试了以下,但它没有工作。

 router.post('/add', function(req, res, next) { var cat_id = cassandra.types.uuid(); var query = "INSERT INTO findadoc.categories(cat_id, name) VALUES (?,?)"; client.execute(query, [cat_id, req.body.name], {prepare: true}, function(err, results) { if(err) { res.status(404).send({msg: err}); } else { cats = results.rows; req.flash('success', "Category Added"); res.location('/doctors'); res.redirect('/doctors'); } }); }); 

在Express 4中您可以通过req.appreq访问app 。 请参阅请求对象 API文档。

当地人可以通过req.app.locals在中间件中find(请参阅req.app)

在你的中间件中,你可以这样做:

 router.post('/add', function(req, res, next) { // do some cool stuff req.app.locals.cats = something; // more cool stuff });