我遇到这种情况需要在路由器之间全局设置mongoose响应(例如动态站点名称)。我试过这个并且它有效,但我认为这不是最好的方法。我可以知道实现它的最佳方法是什么?
我目前的代码:
SomeSchema.findOne({}, function(err, callback) {
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Home'
});
});
router.get('/page1', function(req, res, next) {
res.render('page1', {
title: 'Page 1'
});
});
});
答案 0 :(得分:0)
您想要的是使用中间件。能够获得所需价值并将其传递给每个请求的东西。
如果您只需要获取一次值,只需在服务器启动时调用它即可。否则请参阅下面的中间件方法。
route.use(function(req, res, next) {
//Runs on every request.
SomeSchema.findOne({}, function(err, callback) {
req.someValue = callback;
next();
});
})
router.get('/', function(req, res, next) {
console.log(req.someValue); //My value is here
res.render('index', {
title: 'Home'
});
});
router.get('/page1', function(req, res, next) {
console.log(req.someValue); //or here
res.render('page1', {
title: 'Page 1'
});
});