我有一个node.js项目。以下代码是我的app.js文件的一部分。我正在从数据库中进行查询并将结果存储在名为“Cats”的全局变量中。我正在使用此变量在网站的侧边栏上显示类别。我认为它不相关,但我使用Jade作为模板引擎。
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'变量来更新新的类别集。无论如何我在路线上修改了这个吗?我尝试了以下但是没有用。
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');
}
});
});
答案 0 :(得分:22)
在Express 4中您可以使用app
从req
访问req.app
。请参阅Request object API文档。
通过req.app.locals在中间件中提供本地人(请参阅req.app)
在您的中间件中,您可以这样做:
router.post('/add', function(req, res, next) {
// do some cool stuff
req.app.locals.cats = something;
// more cool stuff
});